Merge
|
@ -8603,4 +8603,91 @@ LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.Mail
|
||||||
WHERE
|
WHERE
|
||||||
E.UserPrincipalName = @UserPrincipalName
|
E.UserPrincipalName = @UserPrincipalName
|
||||||
RETURN
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--Webdav portal users settings
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'WebDavPortalUsersSettings')
|
||||||
|
CREATE TABLE WebDavPortalUsersSettings
|
||||||
|
(
|
||||||
|
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||||
|
AccountId INT NOT NULL,
|
||||||
|
Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_NAME ='FK_WebDavPortalUsersSettings_UserId')
|
||||||
|
ALTER TABLE [dbo].[WebDavPortalUsersSettings]
|
||||||
|
DROP CONSTRAINT [FK_WebDavPortalUsersSettings_UserId]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[WebDavPortalUsersSettings] WITH CHECK ADD CONSTRAINT [FK_WebDavPortalUsersSettings_UserId] FOREIGN KEY([AccountID])
|
||||||
|
REFERENCES [dbo].[ExchangeAccounts] ([AccountID])
|
||||||
|
ON DELETE CASCADE
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetWebDavPortalUsersSettingsByAccountId')
|
||||||
|
DROP PROCEDURE GetWebDavPortalUsersSettingsByAccountId
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[GetWebDavPortalUsersSettingsByAccountId]
|
||||||
|
(
|
||||||
|
@AccountId INT
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT TOP 1
|
||||||
|
US.Id,
|
||||||
|
US.AccountId,
|
||||||
|
US.Settings
|
||||||
|
FROM WebDavPortalUsersSettings AS US
|
||||||
|
WHERE AccountId = @AccountId
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddWebDavPortalUsersSettings')
|
||||||
|
DROP PROCEDURE AddWebDavPortalUsersSettings
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[AddWebDavPortalUsersSettings]
|
||||||
|
(
|
||||||
|
@WebDavPortalUsersSettingsId INT OUTPUT,
|
||||||
|
@AccountId INT,
|
||||||
|
@Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
INSERT INTO WebDavPortalUsersSettings
|
||||||
|
(
|
||||||
|
AccountId,
|
||||||
|
Settings
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@AccountId,
|
||||||
|
@Settings
|
||||||
|
)
|
||||||
|
|
||||||
|
SET @WebDavPortalUsersSettingsId = SCOPE_IDENTITY()
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateWebDavPortalUsersSettings')
|
||||||
|
DROP PROCEDURE UpdateWebDavPortalUsersSettings
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[UpdateWebDavPortalUsersSettings]
|
||||||
|
(
|
||||||
|
@AccountId INT,
|
||||||
|
@Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
UPDATE WebDavPortalUsersSettings
|
||||||
|
SET
|
||||||
|
Settings = @Settings
|
||||||
|
WHERE AccountId = @AccountId
|
||||||
GO
|
GO
|
|
@ -69,6 +69,10 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
|
private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetWebDavPortalUserSettingsByAccountIdOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback UpdateWebDavPortalUserSettingsOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetDirectoryBrowseEnabledOperationCompleted;
|
private System.Threading.SendOrPostCallback GetDirectoryBrowseEnabledOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SetDirectoryBrowseEnabledOperationCompleted;
|
private System.Threading.SendOrPostCallback SetDirectoryBrowseEnabledOperationCompleted;
|
||||||
|
@ -145,6 +149,12 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
|
public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetWebDavPortalUserSettingsByAccountIdCompletedEventHandler GetWebDavPortalUserSettingsByAccountIdCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event UpdateWebDavPortalUserSettingsCompletedEventHandler UpdateWebDavPortalUserSettingsCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetDirectoryBrowseEnabledCompletedEventHandler GetDirectoryBrowseEnabledCompleted;
|
public event GetDirectoryBrowseEnabledCompletedEventHandler GetDirectoryBrowseEnabledCompleted;
|
||||||
|
|
||||||
|
@ -928,6 +938,90 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWebDavPortalUserSettingsByAccount" +
|
||||||
|
"Id", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string GetWebDavPortalUserSettingsByAccountId(int accountId) {
|
||||||
|
object[] results = this.Invoke("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetWebDavPortalUserSettingsByAccountId(int accountId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string EndGetWebDavPortalUserSettingsByAccountId(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetWebDavPortalUserSettingsByAccountIdAsync(int accountId) {
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdAsync(accountId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetWebDavPortalUserSettingsByAccountIdAsync(int accountId, object userState) {
|
||||||
|
if ((this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted == null)) {
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWebDavPortalUserSettingsByAccountIdOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId}, this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetWebDavPortalUserSettingsByAccountIdOperationCompleted(object arg) {
|
||||||
|
if ((this.GetWebDavPortalUserSettingsByAccountIdCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdCompleted(this, new GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/UpdateWebDavPortalUserSettings", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void UpdateWebDavPortalUserSettings(int accountId, string settings) {
|
||||||
|
this.Invoke("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginUpdateWebDavPortalUserSettings(int accountId, string settings, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndUpdateWebDavPortalUserSettings(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void UpdateWebDavPortalUserSettingsAsync(int accountId, string settings) {
|
||||||
|
this.UpdateWebDavPortalUserSettingsAsync(accountId, settings, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void UpdateWebDavPortalUserSettingsAsync(int accountId, string settings, object userState) {
|
||||||
|
if ((this.UpdateWebDavPortalUserSettingsOperationCompleted == null)) {
|
||||||
|
this.UpdateWebDavPortalUserSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateWebDavPortalUserSettingsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings}, this.UpdateWebDavPortalUserSettingsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnUpdateWebDavPortalUserSettingsOperationCompleted(object arg) {
|
||||||
|
if ((this.UpdateWebDavPortalUserSettingsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.UpdateWebDavPortalUserSettingsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetDirectoryBrowseEnabled", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetDirectoryBrowseEnabled", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public bool GetDirectoryBrowseEnabled(int itemId, string site) {
|
public bool GetDirectoryBrowseEnabled(int itemId, string site) {
|
||||||
|
@ -1811,6 +1905,36 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetWebDavPortalUserSettingsByAccountIdCompletedEventHandler(object sender, GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void UpdateWebDavPortalUserSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void GetDirectoryBrowseEnabledCompletedEventHandler(object sender, GetDirectoryBrowseEnabledCompletedEventArgs e);
|
public delegate void GetDirectoryBrowseEnabledCompletedEventHandler(object sender, GetDirectoryBrowseEnabledCompletedEventArgs e);
|
||||||
|
|
|
@ -114,6 +114,10 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SaveRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public esRemoteDesktopServices() {
|
public esRemoteDesktopServices() {
|
||||||
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
||||||
|
@ -245,6 +249,12 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsCollectionLocalAdminsCompletedEventHandler GetRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SaveRdsCollectionLocalAdminsCompletedEventHandler SaveRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollection", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollection", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public RdsCollection GetRdsCollection(int collectionId) {
|
public RdsCollection GetRdsCollection(int collectionId) {
|
||||||
|
@ -1216,15 +1226,17 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RemoveRdsServerFromOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RemoveRdsServerFromOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public ResultObject RemoveRdsServerFromOrganization(int rdsServerId) {
|
public ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId) {
|
||||||
object[] results = this.Invoke("RemoveRdsServerFromOrganization", new object[] {
|
object[] results = this.Invoke("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId});
|
rdsServerId});
|
||||||
return ((ResultObject)(results[0]));
|
return ((ResultObject)(results[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public System.IAsyncResult BeginRemoveRdsServerFromOrganization(int rdsServerId, System.AsyncCallback callback, object asyncState) {
|
public System.IAsyncResult BeginRemoveRdsServerFromOrganization(int itemId, int rdsServerId, System.AsyncCallback callback, object asyncState) {
|
||||||
return this.BeginInvoke("RemoveRdsServerFromOrganization", new object[] {
|
return this.BeginInvoke("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId}, callback, asyncState);
|
rdsServerId}, callback, asyncState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1235,16 +1247,17 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveRdsServerFromOrganizationAsync(int rdsServerId) {
|
public void RemoveRdsServerFromOrganizationAsync(int itemId, int rdsServerId) {
|
||||||
this.RemoveRdsServerFromOrganizationAsync(rdsServerId, null);
|
this.RemoveRdsServerFromOrganizationAsync(itemId, rdsServerId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveRdsServerFromOrganizationAsync(int rdsServerId, object userState) {
|
public void RemoveRdsServerFromOrganizationAsync(int itemId, int rdsServerId, object userState) {
|
||||||
if ((this.RemoveRdsServerFromOrganizationOperationCompleted == null)) {
|
if ((this.RemoveRdsServerFromOrganizationOperationCompleted == null)) {
|
||||||
this.RemoveRdsServerFromOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromOrganizationOperationCompleted);
|
this.RemoveRdsServerFromOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromOrganizationOperationCompleted);
|
||||||
}
|
}
|
||||||
this.InvokeAsync("RemoveRdsServerFromOrganization", new object[] {
|
this.InvokeAsync("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId}, this.RemoveRdsServerFromOrganizationOperationCompleted, userState);
|
rdsServerId}, this.RemoveRdsServerFromOrganizationOperationCompleted, userState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2140,6 +2153,91 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public OrganizationUser[] GetRdsCollectionLocalAdmins(int itemId) {
|
||||||
|
object[] results = this.Invoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
itemId});
|
||||||
|
return ((OrganizationUser[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsCollectionLocalAdmins(int itemId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
itemId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationUser[] EndGetRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((OrganizationUser[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(int itemId) {
|
||||||
|
this.GetRdsCollectionLocalAdminsAsync(itemId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(int itemId, object userState) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.GetRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
itemId}, this.GetRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsCollectionLocalAdminsCompleted(this, new GetRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SaveRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int itemId) {
|
||||||
|
object[] results = this.Invoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
itemId});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSaveRdsCollectionLocalAdmins(OrganizationUser[] users, int itemId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
itemId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndSaveRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, int itemId) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsAsync(users, itemId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, int itemId, object userState) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSaveRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
itemId}, this.SaveRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSaveRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SaveRdsCollectionLocalAdminsCompleted(this, new SaveRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
|
@ -3237,4 +3335,56 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsCollectionLocalAdminsCompletedEventHandler(object sender, GetRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationUser[] Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((OrganizationUser[])(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SaveRdsCollectionLocalAdminsCompletedEventHandler(object sender, SaveRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class SaveRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal SaveRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4486,6 +4486,45 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IDataReader GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
return SqlHelper.ExecuteReader(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"GetWebDavPortalUsersSettingsByAccountId",
|
||||||
|
new SqlParameter("@AccountId", accountId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AddWebDavPortalUsersSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
SqlParameter settingsId = new SqlParameter("@WebDavPortalUsersSettingsId", SqlDbType.Int);
|
||||||
|
settingsId.Direction = ParameterDirection.Output;
|
||||||
|
|
||||||
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"AddWebDavPortalUsersSettings",
|
||||||
|
settingsId,
|
||||||
|
new SqlParameter("@AccountId", accountId),
|
||||||
|
new SqlParameter("@Settings", settings)
|
||||||
|
);
|
||||||
|
|
||||||
|
// read identity
|
||||||
|
return Convert.ToInt32(settingsId.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateWebDavPortalUsersSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"UpdateWebDavPortalUsersSettings",
|
||||||
|
new SqlParameter("@AccountId", accountId),
|
||||||
|
new SqlParameter("@Settings", settings)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Support Service Levels
|
#region Support Service Levels
|
||||||
|
|
|
@ -1210,6 +1210,37 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region WebDav portal
|
||||||
|
|
||||||
|
public static string GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
var dataReader = DataProvider.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
while (dataReader.Read())
|
||||||
|
{
|
||||||
|
return (string)dataReader["Settings"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateUserSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
var oldSettings = GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(oldSettings))
|
||||||
|
{
|
||||||
|
DataProvider.AddWebDavPortalUsersSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DataProvider.UpdateWebDavPortalUsersSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region Statistics
|
#region Statistics
|
||||||
|
|
||||||
public static OrganizationStatistics GetStatistics(int itemId)
|
public static OrganizationStatistics GetStatistics(int itemId)
|
||||||
|
|
|
@ -168,9 +168,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return RemoveRdsServerFromCollectionInternal(itemId, rdsServer, rdsCollection);
|
return RemoveRdsServerFromCollectionInternal(itemId, rdsServer, rdsCollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResultObject RemoveRdsServerFromOrganization(int rdsServerId)
|
public static ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
return RemoveRdsServerFromOrganizationInternal(rdsServerId);
|
return RemoveRdsServerFromOrganizationInternal(itemId, rdsServerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResultObject UpdateRdsServer(RdsServer rdsServer)
|
public static ResultObject UpdateRdsServer(RdsServer rdsServer)
|
||||||
|
@ -268,6 +268,16 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return RestartRdsServerInternal(itemId, fqdnName);
|
return RestartRdsServerInternal(itemId, fqdnName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<OrganizationUser> GetRdsCollectionLocalAdmins(int itemId)
|
||||||
|
{
|
||||||
|
return GetRdsCollectionLocalAdminsInternal(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int itemId)
|
||||||
|
{
|
||||||
|
return SaveRdsCollectionLocalAdminsInternal(users, itemId);
|
||||||
|
}
|
||||||
|
|
||||||
private static RdsCollection GetRdsCollectionInternal(int collectionId)
|
private static RdsCollection GetRdsCollectionInternal(int collectionId)
|
||||||
{
|
{
|
||||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
@ -300,6 +310,61 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<OrganizationUser> GetRdsCollectionLocalAdminsInternal(int itemId)
|
||||||
|
{
|
||||||
|
var result = new List<OrganizationUser>();
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
|
||||||
|
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(itemId, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||||
|
var organizationAdmins = rds.GetRdsCollectionLocalAdmins(org.OrganizationId);
|
||||||
|
|
||||||
|
return organizationUsers.Where(o => organizationAdmins.Select(a => a.ToLower()).Contains(o.SamAccountName.ToLower())).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResultObject SaveRdsCollectionLocalAdminsInternal(OrganizationUser[] users, int itemId)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SAVE_LOCAL_ADMINS");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
rds.SaveRdsCollectionLocalAdmins(users.Select(u => u.AccountName).ToArray(), org.OrganizationId);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static RdsCollectionSettings GetRdsCollectionSettingsInternal(int collectionId)
|
private static RdsCollectionSettings GetRdsCollectionSettingsInternal(int collectionId)
|
||||||
{
|
{
|
||||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
@ -960,11 +1025,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
rds.AddSessionHostFeatureToServer(rdsServer.FqdName);
|
rds.AddSessionHostFeatureToServer(rdsServer.FqdName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rds.MoveRdsServerToTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||||
DataProvider.AddRDSServerToOrganization(itemId, serverId);
|
DataProvider.AddRDSServerToOrganization(itemId, serverId);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result.AddError("REMOTE_DESKTOP_SERVICES_ADD_RDS_SERVER_TO_ORGANIZATION", ex);
|
throw TaskManager.WriteError(ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -981,17 +1047,29 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ResultObject RemoveRdsServerFromOrganizationInternal(int rdsServerId)
|
private static ResultObject RemoveRdsServerFromOrganizationInternal(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rdsServer = ObjectUtils.FillObjectFromDataReader<RdsServer>(DataProvider.GetRDSServerById(rdsServerId));
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
rds.RemoveRdsServerFromTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||||
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
|
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result.AddError("REMOTE_DESKTOP_SERVICES_REMOVE_RDS_SERVER_FROM_ORGANIZATION", ex);
|
throw TaskManager.WriteError(ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -1542,7 +1620,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (var server in servers)
|
foreach (var server in servers)
|
||||||
{
|
{
|
||||||
RemoveRdsServerFromOrganization(server.Id);
|
RemoveRdsServerFromOrganization(itemId, server.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -158,6 +158,18 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return EnterpriseStorageController.CheckUsersDomainExists(itemId);
|
return EnterpriseStorageController.CheckUsersDomainExists(itemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public string GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
return EnterpriseStorageController.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public void UpdateWebDavPortalUserSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
EnterpriseStorageController.UpdateUserSettings(accountId,settings);
|
||||||
|
}
|
||||||
|
|
||||||
#region Directory Browsing
|
#region Directory Browsing
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
|
|
|
@ -189,9 +189,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
public ResultObject RemoveRdsServerFromOrganization(int rdsServerId)
|
public ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
return RemoteDesktopServicesController.RemoveRdsServerFromOrganization(rdsServerId);
|
return RemoteDesktopServicesController.RemoveRdsServerFromOrganization(itemId, rdsServerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
|
@ -313,5 +313,17 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
return RemoteDesktopServicesController.RestartRdsServer(itemId, fqdnName);
|
return RemoteDesktopServicesController.RestartRdsServer(itemId, fqdnName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public List<OrganizationUser> GetRdsCollectionLocalAdmins(int itemId)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.GetRdsCollectionLocalAdmins(itemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int itemId)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.SaveRdsCollectionLocalAdmins(users, itemId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,5 +73,9 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
string GetRdsServerStatus(string serverName);
|
string GetRdsServerStatus(string serverName);
|
||||||
void ShutDownRdsServer(string serverName);
|
void ShutDownRdsServer(string serverName);
|
||||||
void RestartRdsServer(string serverName);
|
void RestartRdsServer(string serverName);
|
||||||
|
void SaveRdsCollectionLocalAdmins(List<string> users, string organizationId);
|
||||||
|
List<string> GetRdsCollectionLocalAdmins(string organizationId);
|
||||||
|
void MoveRdsServerToTenantOU(string hostName, string organizationId);
|
||||||
|
void RemoveRdsServerFromTenantOU(string hostName, string organizationId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,8 @@ using System.Management;
|
||||||
using System.Management.Automation;
|
using System.Management.Automation;
|
||||||
using System.Management.Automation.Runspaces;
|
using System.Management.Automation.Runspaces;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.DirectoryServices;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
|
||||||
|
|
||||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
@ -63,7 +65,9 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
private const string Users = "users";
|
private const string Users = "users";
|
||||||
private const string RdsGroupFormat = "rds-{0}-{1}";
|
private const string RdsGroupFormat = "rds-{0}-{1}";
|
||||||
private const string RdsModuleName = "RemoteDesktopServices";
|
private const string RdsModuleName = "RemoteDesktopServices";
|
||||||
private const string AddNpsString = "netsh nps add np name=\"\"{0}\"\" policysource=\"1\" processingorder=\"{1}\" conditionid=\"0x3d\" conditiondata=\"^5$\" conditionid=\"0x1fb5\" conditiondata=\"{2}\" conditionid=\"0x1e\" conditiondata=\"UserAuthType:(PW|CA)\" profileid=\"0x1005\" profiledata=\"TRUE\" profileid=\"0x100f\" profiledata=\"TRUE\" profileid=\"0x1009\" profiledata=\"0x7\" profileid=\"0x1fe6\" profiledata=\"0x40000000\"";
|
private const string AddNpsString = "netsh nps add np name=\"\"{0}\"\" policysource=\"1\" processingorder=\"{1}\" conditionid=\"0x3d\" conditiondata=\"^5$\" conditionid=\"0x1fb5\" conditiondata=\"{2}\" conditionid=\"0x1e\" conditiondata=\"UserAuthType:(PW|CA)\" profileid=\"0x1005\" profiledata=\"TRUE\" profileid=\"0x100f\" profiledata=\"TRUE\" profileid=\"0x1009\" profiledata=\"0x7\" profileid=\"0x1fe6\" profiledata=\"0x40000000\"";
|
||||||
|
private const string WspAdministratorsGroupName = "WSPAdministrators";
|
||||||
|
private const string RdsServersOU = "RDSServers";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -497,7 +501,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
//Remove security group
|
//Remove security group
|
||||||
|
|
||||||
ActiveDirectoryUtils.DeleteADObject(GetComputerGroupPath(organizationId, collectionName));
|
ActiveDirectoryUtils.DeleteADObject(GetComputerGroupPath(organizationId, collectionName));
|
||||||
|
|
||||||
ActiveDirectoryUtils.DeleteADObject(GetUsersGroupPath(organizationId, collectionName));
|
ActiveDirectoryUtils.DeleteADObject(GetUsersGroupPath(organizationId, collectionName));
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -949,6 +952,109 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Local Admins
|
||||||
|
|
||||||
|
public void SaveRdsCollectionLocalAdmins(List<string> users, string organizationId)
|
||||||
|
{
|
||||||
|
if (!CheckAdminsGroup(organizationId))
|
||||||
|
{
|
||||||
|
CreateAdminsGroup(organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
var orgPath = GetOrganizationPath(organizationId);
|
||||||
|
var orgEntry = ActiveDirectoryUtils.GetADObject(orgPath);
|
||||||
|
var existingAdmins = ActiveDirectoryUtils.GetGroupObjects(WspAdministratorsGroupName, "user", orgEntry);
|
||||||
|
var adminsGroupPath = GetWspAdminsGroupPath(organizationId);
|
||||||
|
|
||||||
|
foreach (string userPath in existingAdmins)
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(userPath, adminsGroupPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var user in users)
|
||||||
|
{
|
||||||
|
var userPath = GetUserPath(organizationId, user);
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(userPath))
|
||||||
|
{
|
||||||
|
var userObject = ActiveDirectoryUtils.GetADObject(userPath);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(userObject, "sAMAccountName");
|
||||||
|
ActiveDirectoryUtils.AddObjectToGroup(userPath, adminsGroupPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<string> GetRdsCollectionLocalAdmins(string organizationId)
|
||||||
|
{
|
||||||
|
var adminsGroupPath = GetWspAdminsGroupPath(organizationId);
|
||||||
|
var orgPath = GetOrganizationPath(organizationId);
|
||||||
|
var orgEntry = ActiveDirectoryUtils.GetADObject(orgPath);
|
||||||
|
var rdsAdmins = ActiveDirectoryUtils.GetGroupObjects(WspAdministratorsGroupName, "user", orgEntry);
|
||||||
|
var rootPath = GetRootOUPath();
|
||||||
|
var rootEntry = ActiveDirectoryUtils.GetADObject(rootPath);
|
||||||
|
|
||||||
|
var collectionUsers = ActiveDirectoryUtils.GetGroupObjects(organizationId, "user", rootEntry);
|
||||||
|
var orgAdmins = collectionUsers.Intersect(rdsAdmins);
|
||||||
|
var result = new List<string>();
|
||||||
|
|
||||||
|
foreach (var admin in orgAdmins)
|
||||||
|
{
|
||||||
|
var userObject = ActiveDirectoryUtils.GetADObject(admin);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(userObject, "sAMAccountName");
|
||||||
|
result.Add(samName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckAdminsGroup(string organizationId)
|
||||||
|
{
|
||||||
|
var adminsGroupPath = GetWspAdminsGroupPath(organizationId);
|
||||||
|
return ActiveDirectoryUtils.AdObjectExists(adminsGroupPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateAdminsGroup(string organizationId)
|
||||||
|
{
|
||||||
|
var adminsRootGroupPath = GetWspAdminsRootGroupPath(organizationId);
|
||||||
|
ActiveDirectoryUtils.CreateGroup(adminsRootGroupPath, WspAdministratorsGroupName);
|
||||||
|
|
||||||
|
string groupPath = string.Format("WinNT://{0}/{1}/{2},group", ServerSettings.ADRootDomain, PrimaryDomainController, WspAdministratorsGroupName);
|
||||||
|
|
||||||
|
using (var userGroup = new DirectoryEntry(groupPath))
|
||||||
|
{
|
||||||
|
string localAdministratorsPath = string.Format("WinNT://{0}/{1},group", PrimaryDomainController, "Administrators");
|
||||||
|
|
||||||
|
using (DirectoryEntry group = new DirectoryEntry(localAdministratorsPath))
|
||||||
|
{
|
||||||
|
group.Invoke("Add", groupPath);
|
||||||
|
group.CommitChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region SSL
|
||||||
|
|
||||||
|
public void InstallCertificate(byte[] certificate, string password, string hostName)
|
||||||
|
{
|
||||||
|
var x509Cert = new X509Certificate2(certificate, password, X509KeyStorageFlags.Exportable);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string CopyCertificateFile(byte[] certificate, string hostName)
|
||||||
|
{
|
||||||
|
var destinationPath = string.Format("\\{0}\\c$\\remoteCert.pfx", hostName);
|
||||||
|
|
||||||
|
return destinationPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteCertificate(string path)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void AddRdsServerToDeployment(Runspace runSpace, RdsServer server)
|
private void AddRdsServerToDeployment(Runspace runSpace, RdsServer server)
|
||||||
{
|
{
|
||||||
Command cmd = new Command("Add-RDserver");
|
Command cmd = new Command("Add-RDserver");
|
||||||
|
@ -1104,6 +1210,63 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return installationResult;
|
return installationResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
var tenantComputerGroupPath = GetTenantComputerGroupPath(organizationId);
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(tenantComputerGroupPath))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.CreateGroup(GetOrganizationPath(organizationId), RdsServersOU);
|
||||||
|
}
|
||||||
|
|
||||||
|
hostName = hostName.ToLower().Replace(string.Format(".{0}", ServerSettings.ADRootDomain.ToLower()), "");
|
||||||
|
var computerPath = GetComputerPath(hostName, true);
|
||||||
|
|
||||||
|
if(!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
computerPath = GetComputerPath(hostName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
var computerObject = ActiveDirectoryUtils.GetADObject(computerPath);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(computerObject, "sAMAccountName");
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.IsComputerInGroup(samName, RdsServersOU))
|
||||||
|
{
|
||||||
|
DirectoryEntry group = new DirectoryEntry(tenantComputerGroupPath);
|
||||||
|
group.Invoke("Add", computerObject.Path);
|
||||||
|
|
||||||
|
group.CommitChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
var tenantComputerGroupPath = GetTenantComputerGroupPath(organizationId);
|
||||||
|
hostName = hostName.ToLower().Replace(string.Format(".{0}", ServerSettings.ADRootDomain.ToLower()), "");
|
||||||
|
var tenantComputerPath = GetTenantComputerPath(hostName, organizationId);
|
||||||
|
|
||||||
|
var computerPath = GetComputerPath(hostName, true);
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
computerPath = GetComputerPath(hostName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
var computerObject = ActiveDirectoryUtils.GetADObject(computerPath);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(computerObject, "sAMAccountName");
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.IsComputerInGroup(samName, RdsServersOU))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(computerPath, tenantComputerGroupPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool CheckSessionHostFeatureInstallation(string hostName)
|
public bool CheckSessionHostFeatureInstallation(string hostName)
|
||||||
{
|
{
|
||||||
bool isInstalled = false;
|
bool isInstalled = false;
|
||||||
|
@ -1300,6 +1463,31 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
AppendOUPath(sb, RootOU);
|
AppendOUPath(sb, RootOU);
|
||||||
AppendDomainPath(sb, RootDomain);
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string GetWspAdminsRootGroupPath(string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string GetWspAdminsGroupPath(string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, WspAdministratorsGroupName);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1310,7 +1498,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
AppendProtocol(sb);
|
AppendProtocol(sb);
|
||||||
AppendDomainController(sb);
|
AppendDomainController(sb);
|
||||||
AppendCNPath(sb, GetUsersGroupName(collection));
|
AppendCNPath(sb, GetUsersGroupName(collection));
|
||||||
AppendOUPath(sb, organizationId);
|
AppendOUPath(sb, organizationId);
|
||||||
AppendOUPath(sb, RootOU);
|
AppendOUPath(sb, RootOU);
|
||||||
AppendDomainPath(sb, RootDomain);
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
@ -1331,6 +1519,18 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetRootOUPath()
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
// append provider
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private string GetOrganizationPath(string organizationId)
|
private string GetOrganizationPath(string organizationId)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -1349,7 +1549,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
// append provider
|
// append provider
|
||||||
AppendProtocol(sb);
|
AppendProtocol(sb);
|
||||||
AppendDomainController(sb);
|
AppendDomainController(sb);
|
||||||
AppendCNPath(sb, objName);
|
AppendCNPath(sb, objName);
|
||||||
if (domainController)
|
if (domainController)
|
||||||
{
|
{
|
||||||
|
@ -1365,6 +1565,35 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetTenantComputerPath(string objName, string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, objName);
|
||||||
|
AppendCNPath(sb, RdsServersOU);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string GetTenantComputerGroupPath(string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, RdsServersOU);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private static void AppendCNPath(StringBuilder sb, string organizationId)
|
private static void AppendCNPath(StringBuilder sb, string organizationId)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(organizationId))
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
|
|
@ -89,6 +89,14 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SaveRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback MoveRdsServerToTenantOUOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback RemoveRdsServerFromTenantOUOperationCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public RemoteDesktopServices() {
|
public RemoteDesktopServices() {
|
||||||
this.Url = "http://localhost:9003/RemoteDesktopServices.asmx";
|
this.Url = "http://localhost:9003/RemoteDesktopServices.asmx";
|
||||||
|
@ -184,6 +192,18 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SaveRdsCollectionLocalAdminsCompletedEventHandler SaveRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsCollectionLocalAdminsCompletedEventHandler GetRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event MoveRdsServerToTenantOUCompletedEventHandler MoveRdsServerToTenantOUCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event RemoveRdsServerFromTenantOUCompletedEventHandler RemoveRdsServerFromTenantOUCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -1483,6 +1503,177 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SaveRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void SaveRdsCollectionLocalAdmins(string[] users, string organizationId) {
|
||||||
|
this.Invoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSaveRdsCollectionLocalAdmins(string[] users, string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndSaveRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(string[] users, string organizationId) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsAsync(users, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(string[] users, string organizationId, object userState) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSaveRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
organizationId}, this.SaveRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSaveRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SaveRdsCollectionLocalAdminsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string[] GetRdsCollectionLocalAdmins(string organizationId) {
|
||||||
|
object[] results = this.Invoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
organizationId});
|
||||||
|
return ((string[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsCollectionLocalAdmins(string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string[] EndGetRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(string organizationId) {
|
||||||
|
this.GetRdsCollectionLocalAdminsAsync(organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(string organizationId, object userState) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.GetRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
organizationId}, this.GetRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsCollectionLocalAdminsCompleted(this, new GetRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/MoveRdsServerToTenantOU", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId) {
|
||||||
|
this.Invoke("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginMoveRdsServerToTenantOU(string hostName, string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndMoveRdsServerToTenantOU(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void MoveRdsServerToTenantOUAsync(string hostName, string organizationId) {
|
||||||
|
this.MoveRdsServerToTenantOUAsync(hostName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void MoveRdsServerToTenantOUAsync(string hostName, string organizationId, object userState) {
|
||||||
|
if ((this.MoveRdsServerToTenantOUOperationCompleted == null)) {
|
||||||
|
this.MoveRdsServerToTenantOUOperationCompleted = new System.Threading.SendOrPostCallback(this.OnMoveRdsServerToTenantOUOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, this.MoveRdsServerToTenantOUOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMoveRdsServerToTenantOUOperationCompleted(object arg) {
|
||||||
|
if ((this.MoveRdsServerToTenantOUCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.MoveRdsServerToTenantOUCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveRdsServerFromTenantOU", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId) {
|
||||||
|
this.Invoke("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginRemoveRdsServerFromTenantOU(string hostName, string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndRemoveRdsServerFromTenantOU(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RemoveRdsServerFromTenantOUAsync(string hostName, string organizationId) {
|
||||||
|
this.RemoveRdsServerFromTenantOUAsync(hostName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RemoveRdsServerFromTenantOUAsync(string hostName, string organizationId, object userState) {
|
||||||
|
if ((this.RemoveRdsServerFromTenantOUOperationCompleted == null)) {
|
||||||
|
this.RemoveRdsServerFromTenantOUOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromTenantOUOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, this.RemoveRdsServerFromTenantOUOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRemoveRdsServerFromTenantOUOperationCompleted(object arg) {
|
||||||
|
if ((this.RemoveRdsServerFromTenantOUCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.RemoveRdsServerFromTenantOUCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
|
@ -2070,4 +2261,42 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void RestartRdsServerCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
public delegate void RestartRdsServerCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SaveRdsCollectionLocalAdminsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsCollectionLocalAdminsCompletedEventHandler(object sender, GetRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string[] Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string[])(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void MoveRdsServerToTenantOUCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void RemoveRdsServerFromTenantOUCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -563,5 +563,71 @@ namespace WebsitePanel.Server
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void SaveRdsCollectionLocalAdmins(List<string> users, string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.SaveRdsCollectionLocalAdmins(users, organizationId);
|
||||||
|
Log.WriteEnd("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public List<string> GetRdsCollectionLocalAdmins(string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
var result = RDSProvider.GetRdsCollectionLocalAdmins(organizationId);
|
||||||
|
Log.WriteEnd("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.MoveRdsServerToTenantOU(hostName, organizationId);
|
||||||
|
Log.WriteEnd("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.RemoveRdsServerFromTenantOU(hostName, organizationId);
|
||||||
|
Log.WriteEnd("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Resources;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Attributes.Resources
|
||||||
|
{
|
||||||
|
public class LocalizedDescriptionAttribute : DescriptionAttribute
|
||||||
|
{
|
||||||
|
private readonly string _resourceKey;
|
||||||
|
private readonly ResourceManager _resource;
|
||||||
|
public LocalizedDescriptionAttribute(Type resourceType, string resourceKey)
|
||||||
|
{
|
||||||
|
_resource = new ResourceManager(resourceType);
|
||||||
|
_resourceKey = resourceKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string displayName = _resource.GetString(_resourceKey);
|
||||||
|
|
||||||
|
return string.IsNullOrEmpty(displayName)
|
||||||
|
? string.Format("[[{0}]]", _resourceKey)
|
||||||
|
: displayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,13 +7,11 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
{
|
{
|
||||||
public int DefaultCount { get; private set; }
|
public int DefaultCount { get; private set; }
|
||||||
public int AddElementsCount { get; private set; }
|
public int AddElementsCount { get; private set; }
|
||||||
public List<string> ElementsToIgnore { get; private set; }
|
|
||||||
|
|
||||||
public ElementsRendering()
|
public ElementsRendering()
|
||||||
{
|
{
|
||||||
DefaultCount = ConfigSection.ElementsRendering.DefaultCount;
|
DefaultCount = ConfigSection.ElementsRendering.DefaultCount;
|
||||||
AddElementsCount = ConfigSection.ElementsRendering.AddElementsCount;
|
AddElementsCount = ConfigSection.ElementsRendering.AddElementsCount;
|
||||||
ElementsToIgnore = ConfigSection.ElementsRendering.ElementsToIgnore.Split(',').ToList();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,10 +12,12 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
public FileIconsDictionary()
|
public FileIconsDictionary()
|
||||||
{
|
{
|
||||||
DefaultPath = ConfigSection.FileIcons.DefaultPath;
|
DefaultPath = ConfigSection.FileIcons.DefaultPath;
|
||||||
|
FolderPath = ConfigSection.FileIcons.FolderPath;
|
||||||
_fileIcons = ConfigSection.FileIcons.Cast<FileIconsElement>().ToDictionary(x => x.Extension, y => y.Path);
|
_fileIcons = ConfigSection.FileIcons.Cast<FileIconsElement>().ToDictionary(x => x.Extension, y => y.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DefaultPath { get; private set; }
|
public string DefaultPath { get; private set; }
|
||||||
|
public string FolderPath { get; private set; }
|
||||||
|
|
||||||
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
|
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
|
||||||
{
|
{
|
||||||
|
@ -57,4 +59,4 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
get { return _fileIcons.Values; }
|
get { return _fileIcons.Values; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.WebDav.Core.Config.WebConfigSections;
|
||||||
|
using WebsitePanel.WebDavPortal.WebConfigSections;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
|
{
|
||||||
|
public class FilesToIgnoreCollection : AbstractConfigCollection, IReadOnlyCollection<FilesToIgnoreElement>
|
||||||
|
{
|
||||||
|
private readonly IList<FilesToIgnoreElement> _filesToIgnore;
|
||||||
|
|
||||||
|
public FilesToIgnoreCollection()
|
||||||
|
{
|
||||||
|
_filesToIgnore = ConfigSection.FilesToIgnore.Cast<FilesToIgnoreElement>().ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<FilesToIgnoreElement> GetEnumerator()
|
||||||
|
{
|
||||||
|
return _filesToIgnore.GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get { return _filesToIgnore.Count; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(string name)
|
||||||
|
{
|
||||||
|
return _filesToIgnore.Any(x => x.Name == name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,5 +13,6 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
HttpErrorsCollection HttpErrors { get; }
|
HttpErrorsCollection HttpErrors { get; }
|
||||||
OfficeOnlineCollection OfficeOnline { get; }
|
OfficeOnlineCollection OfficeOnline { get; }
|
||||||
OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; }
|
OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; }
|
||||||
|
FilesToIgnoreCollection FilesToIgnore { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,7 +6,6 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
{
|
{
|
||||||
private const string DefaultCountKey = "defaultCount";
|
private const string DefaultCountKey = "defaultCount";
|
||||||
private const string AddElementsCountKey = "addElementsCount";
|
private const string AddElementsCountKey = "addElementsCount";
|
||||||
private const string ElementsToIgnoreKey = "elementsToIgnoreKey";
|
|
||||||
|
|
||||||
[ConfigurationProperty(DefaultCountKey, IsKey = true, IsRequired = true, DefaultValue = 30)]
|
[ConfigurationProperty(DefaultCountKey, IsKey = true, IsRequired = true, DefaultValue = 30)]
|
||||||
public int DefaultCount
|
public int DefaultCount
|
||||||
|
@ -21,12 +20,5 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
get { return (int)this[AddElementsCountKey]; }
|
get { return (int)this[AddElementsCountKey]; }
|
||||||
set { this[AddElementsCountKey] = value; }
|
set { this[AddElementsCountKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConfigurationProperty(ElementsToIgnoreKey, IsKey = true, IsRequired = true, DefaultValue = "")]
|
|
||||||
public string ElementsToIgnore
|
|
||||||
{
|
|
||||||
get { return (string)this[ElementsToIgnoreKey]; }
|
|
||||||
set { this[ElementsToIgnoreKey] = value; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
public class FileIconsElementCollection : ConfigurationElementCollection
|
public class FileIconsElementCollection : ConfigurationElementCollection
|
||||||
{
|
{
|
||||||
private const string DefaultPathKey = "defaultPath";
|
private const string DefaultPathKey = "defaultPath";
|
||||||
|
private const string FolderPathKey = "folderPath";
|
||||||
|
|
||||||
[ConfigurationProperty(DefaultPathKey, IsRequired = false, DefaultValue = "/")]
|
[ConfigurationProperty(DefaultPathKey, IsRequired = false, DefaultValue = "/")]
|
||||||
public string DefaultPath
|
public string DefaultPath
|
||||||
|
@ -14,6 +15,13 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
set { this[DefaultPathKey] = value; }
|
set { this[DefaultPathKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(FolderPathKey, IsRequired = false)]
|
||||||
|
public string FolderPath
|
||||||
|
{
|
||||||
|
get { return (string)this[FolderPathKey]; }
|
||||||
|
set { this[FolderPathKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
protected override ConfigurationElement CreateNewElement()
|
protected override ConfigurationElement CreateNewElement()
|
||||||
{
|
{
|
||||||
return new FileIconsElement();
|
return new FileIconsElement();
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
public class FilesToIgnoreElement : ConfigurationElement
|
||||||
|
{
|
||||||
|
private const string NameKey = "name";
|
||||||
|
private const string RegexKey = "regex";
|
||||||
|
|
||||||
|
[ConfigurationProperty(NameKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return this[NameKey].ToString(); }
|
||||||
|
set { this[NameKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(RegexKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Regex
|
||||||
|
{
|
||||||
|
get { return this[RegexKey].ToString(); }
|
||||||
|
set { this[RegexKey] = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
[ConfigurationCollection(typeof(FilesToIgnoreElement))]
|
||||||
|
public class FilesToIgnoreElementCollection : ConfigurationElementCollection
|
||||||
|
{
|
||||||
|
protected override ConfigurationElement CreateNewElement()
|
||||||
|
{
|
||||||
|
return new FilesToIgnoreElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override object GetElementKey(ConfigurationElement element)
|
||||||
|
{
|
||||||
|
return ((FilesToIgnoreElement)element).Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
private const string FileIconsKey = "fileIcons";
|
private const string FileIconsKey = "fileIcons";
|
||||||
private const string OwaSupportedBrowsersKey = "owaSupportedBrowsers";
|
private const string OwaSupportedBrowsersKey = "owaSupportedBrowsers";
|
||||||
private const string OfficeOnlineKey = "officeOnline";
|
private const string OfficeOnlineKey = "officeOnline";
|
||||||
|
private const string FilesToIgnoreKey = "filesToIgnore";
|
||||||
|
|
||||||
public const string SectionName = "webDavExplorerConfigurationSettings";
|
public const string SectionName = "webDavExplorerConfigurationSettings";
|
||||||
|
|
||||||
|
@ -89,5 +90,12 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
get { return (OfficeOnlineElementCollection)this[OfficeOnlineKey]; }
|
get { return (OfficeOnlineElementCollection)this[OfficeOnlineKey]; }
|
||||||
set { this[OfficeOnlineKey] = value; }
|
set { this[OfficeOnlineKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(FilesToIgnoreKey, IsDefaultCollection = false)]
|
||||||
|
public FilesToIgnoreElementCollection FilesToIgnore
|
||||||
|
{
|
||||||
|
get { return (FilesToIgnoreElementCollection)this[FilesToIgnoreKey]; }
|
||||||
|
set { this[FilesToIgnoreKey] = value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,7 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
HttpErrors = new HttpErrorsCollection();
|
HttpErrors = new HttpErrorsCollection();
|
||||||
OfficeOnline = new OfficeOnlineCollection();
|
OfficeOnline = new OfficeOnlineCollection();
|
||||||
OwaSupportedBrowsers = new OwaSupportedBrowsersCollection();
|
OwaSupportedBrowsers = new OwaSupportedBrowsersCollection();
|
||||||
|
FilesToIgnore = new FilesToIgnoreCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebDavAppConfigManager Instance
|
public static WebDavAppConfigManager Instance
|
||||||
|
@ -53,5 +54,6 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
public HttpErrorsCollection HttpErrors { get; private set; }
|
public HttpErrorsCollection HttpErrors { get; private set; }
|
||||||
public OfficeOnlineCollection OfficeOnline { get; private set; }
|
public OfficeOnlineCollection OfficeOnline { get; private set; }
|
||||||
public OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; private set; }
|
public OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; private set; }
|
||||||
|
public FilesToIgnoreCollection FilesToIgnore { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace WebsitePanel.WebDav.Core.Entities.Account.Enums
|
||||||
|
{
|
||||||
|
public enum FolderViewTypes
|
||||||
|
{
|
||||||
|
BigIcons,
|
||||||
|
Table
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Entities.Account
|
||||||
|
{
|
||||||
|
public class UserPortalSettings
|
||||||
|
{
|
||||||
|
public FolderViewTypes WebDavViewType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using WebsitePanel.WebDav.Core.Attributes.Resources;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Extensions
|
||||||
|
{
|
||||||
|
public static class EnumExtensions
|
||||||
|
{
|
||||||
|
public static string GetDescription(this Enum value)
|
||||||
|
{
|
||||||
|
FieldInfo field = value.GetType().GetField(value.ToString());
|
||||||
|
|
||||||
|
DescriptionAttribute attribute
|
||||||
|
= Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
|
||||||
|
as DescriptionAttribute;
|
||||||
|
|
||||||
|
return attribute == null ? value.ToString() : attribute.Description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
using System.IO;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Helper
|
||||||
|
{
|
||||||
|
public class SerializeHelper
|
||||||
|
{
|
||||||
|
public static TResult Deserialize<TResult>(string inputString)
|
||||||
|
{
|
||||||
|
TResult result;
|
||||||
|
|
||||||
|
var serializer = new XmlSerializer(typeof(TResult));
|
||||||
|
|
||||||
|
using (TextReader reader = new StringReader(inputString))
|
||||||
|
{
|
||||||
|
result = (TResult)serializer.Deserialize(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Serialize<TEntity>(TEntity entity)
|
||||||
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
|
||||||
|
var xmlSerializer = new XmlSerializer(typeof(TEntity));
|
||||||
|
|
||||||
|
using (var stringWriter = new StringWriter())
|
||||||
|
{
|
||||||
|
using (XmlWriter writer = XmlWriter.Create(stringWriter))
|
||||||
|
{
|
||||||
|
xmlSerializer.Serialize(writer, entity);
|
||||||
|
result = stringWriter.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -218,6 +218,68 @@ namespace WebsitePanel.WebDav.Core
|
||||||
Open();
|
Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenPaged(string path)
|
||||||
|
{
|
||||||
|
_path = new Uri(path);
|
||||||
|
OpenPaged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenPaged()
|
||||||
|
{
|
||||||
|
var request = (HttpWebRequest)WebRequest.Create(_path);
|
||||||
|
//request.PreAuthenticate = true;
|
||||||
|
request.Method = "SEARCH";
|
||||||
|
|
||||||
|
//TODO Disable SSL
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
|
||||||
|
|
||||||
|
var credentials = (NetworkCredential)_credentials;
|
||||||
|
if (credentials != null && credentials.UserName != null)
|
||||||
|
{
|
||||||
|
request.Credentials = _credentials;
|
||||||
|
|
||||||
|
string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(credentials.UserName + ":" + credentials.Password));
|
||||||
|
request.Headers.Add("Authorization", auth);
|
||||||
|
}
|
||||||
|
|
||||||
|
var strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
|
||||||
|
+ "<D:sql>SELECT \"DAV:displayname\" FROM \"" + _path + "\""
|
||||||
|
+ "WHERE \"DAV:ishidden\" = false"
|
||||||
|
+ "</D:sql></D:searchrequest>";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bytes = Encoding.UTF8.GetBytes(strQuery);
|
||||||
|
|
||||||
|
request.ContentLength = bytes.Length;
|
||||||
|
|
||||||
|
using (var requestStream = request.GetRequestStream())
|
||||||
|
{
|
||||||
|
// Write the SQL query to the request stream.
|
||||||
|
requestStream.Write(bytes, 0, bytes.Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
request.ContentType = "text/xml";
|
||||||
|
|
||||||
|
using (var response = (HttpWebResponse)request.GetResponse())
|
||||||
|
{
|
||||||
|
using (var responseStream = new StreamReader(response.GetResponseStream()))
|
||||||
|
{
|
||||||
|
string responseString = responseStream.ReadToEnd();
|
||||||
|
ProcessResponse(responseString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (WebException e)
|
||||||
|
{
|
||||||
|
if (e.Status == WebExceptionStatus.ProtocolError)
|
||||||
|
{
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Processes the response from the server.
|
/// Processes the response from the server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Security;
|
using System.Net.Security;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
@ -44,6 +45,15 @@ namespace WebsitePanel.WebDav.Core
|
||||||
AllowWriteStreamBuffering = false;
|
AllowWriteStreamBuffering = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebDavResource(ICredentials credentials, IHierarchyItem item)
|
||||||
|
{
|
||||||
|
SendChunked = false;
|
||||||
|
AllowWriteStreamBuffering = false;
|
||||||
|
|
||||||
|
SetCredentials(credentials);
|
||||||
|
SetHierarchyItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
public Uri BaseUri
|
public Uri BaseUri
|
||||||
{
|
{
|
||||||
get { return _baseUri; }
|
get { return _baseUri; }
|
||||||
|
@ -124,7 +134,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
var webClient = new WebClient();
|
var webClient = new WebClient();
|
||||||
webClient.Credentials = credentials;
|
webClient.Credentials = credentials;
|
||||||
webClient.Headers.Add("Authorization", auth);
|
webClient.Headers.Add("Authorization", auth);
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
|
||||||
webClient.UploadData(Href, "PUT", data);
|
webClient.UploadData(Href, "PUT", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +153,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
webClient.Headers.Add("Authorization", auth);
|
webClient.Headers.Add("Authorization", auth);
|
||||||
//TODO Disable SSL
|
//TODO Disable SSL
|
||||||
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate{ return true; });
|
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate{ return true; });
|
||||||
|
|
||||||
return webClient.OpenRead(_href);
|
return webClient.OpenRead(_href);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Interfaces.Managers.Users
|
||||||
|
{
|
||||||
|
public interface IUserSettingsManager
|
||||||
|
{
|
||||||
|
UserPortalSettings GetUserSettings(int accountId);
|
||||||
|
void UpdateSettings(int accountId, UserPortalSettings settings);
|
||||||
|
void ChangeWebDavViewType(int accountId, FolderViewTypes type);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,10 +1,15 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Attributes.Resources;
|
||||||
|
using WebsitePanel.WebDav.Core.Resources;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core
|
namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
namespace Client
|
namespace Client
|
||||||
{
|
{
|
||||||
public enum ItemType
|
public enum ItemType
|
||||||
{
|
{
|
||||||
|
[LocalizedDescription(typeof(WebDavResources), "ItemTypeResource")]
|
||||||
Resource,
|
Resource,
|
||||||
|
[LocalizedDescription(typeof(WebDavResources), "ItemTypeFolder")]
|
||||||
Folder,
|
Folder,
|
||||||
Version,
|
Version,
|
||||||
VersionHistory
|
VersionHistory
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
using WebsitePanel.WebDav.Core.Helper;
|
||||||
|
using WebsitePanel.WebDav.Core.Interfaces.Managers.Users;
|
||||||
|
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Managers.Users
|
||||||
|
{
|
||||||
|
public class UserSettingsManager : IUserSettingsManager
|
||||||
|
{
|
||||||
|
public UserPortalSettings GetUserSettings(int accountId)
|
||||||
|
{
|
||||||
|
string xml = WSP.Services.EnterpriseStorage.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(xml))
|
||||||
|
{
|
||||||
|
return new UserPortalSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
return SerializeHelper.Deserialize<UserPortalSettings>(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateSettings(int accountId, UserPortalSettings settings)
|
||||||
|
{
|
||||||
|
var xml = SerializeHelper.Serialize(settings);
|
||||||
|
|
||||||
|
WSP.Services.EnterpriseStorage.UpdateWebDavPortalUserSettings(accountId, xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeWebDavViewType(int accountId, FolderViewTypes type)
|
||||||
|
{
|
||||||
|
var settings = GetUserSettings(accountId);
|
||||||
|
|
||||||
|
settings.WebDavViewType = type;
|
||||||
|
|
||||||
|
UpdateSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
@ -74,7 +75,7 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
_currentFolder = _webDavSession.OpenFolder(string.Format("{0}{1}/{2}", WebDavAppConfigManager.Instance.WebdavRoot, WspContext.User.OrganizationId, pathPart.TrimStart('/')));
|
_currentFolder = _webDavSession.OpenFolder(string.Format("{0}{1}/{2}", WebDavAppConfigManager.Instance.WebdavRoot, WspContext.User.OrganizationId, pathPart.TrimStart('/')));
|
||||||
}
|
}
|
||||||
|
|
||||||
children = _currentFolder.GetChildren().Where(x => !WebDavAppConfigManager.Instance.ElementsRendering.ElementsToIgnore.Contains(x.DisplayName.Trim('/'))).ToArray();
|
children = FilterResult(_currentFolder.GetChildren()).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IHierarchyItem> sortedChildren = children.Where(x => x.ItemType == ItemType.Folder).OrderBy(x => x.DisplayName).ToList();
|
List<IHierarchyItem> sortedChildren = children.Where(x => x.ItemType == ItemType.Folder).OrderBy(x => x.DisplayName).ToList();
|
||||||
|
@ -352,7 +353,31 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
}
|
}
|
||||||
|
|
||||||
return path.Split('/').Last(); ;
|
return path.Split('/').Last(); ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<IHierarchyItem> FilterResult(IEnumerable<IHierarchyItem> items)
|
||||||
|
{
|
||||||
|
var result = items.ToList();
|
||||||
|
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
foreach (var itemToIgnore in WebDavAppConfigManager.Instance.FilesToIgnore)
|
||||||
|
{
|
||||||
|
var regex = new Regex(itemToIgnore.Regex);
|
||||||
|
|
||||||
|
Match match = regex.Match(item.DisplayName.Trim('/'));
|
||||||
|
|
||||||
|
if (match.Success && result.Contains(item))
|
||||||
|
{
|
||||||
|
result.Remove(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,5 +68,23 @@ namespace WebsitePanel.WebDav.Core.Resources {
|
||||||
return ResourceManager.GetString("FolderIsNotEmptyFormat", resourceCulture);
|
return ResourceManager.GetString("FolderIsNotEmptyFormat", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Folder.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemTypeFolder {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemTypeFolder", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Document.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemTypeResource {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemTypeResource", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,4 +120,10 @@
|
||||||
<data name="FolderIsNotEmptyFormat" xml:space="preserve">
|
<data name="FolderIsNotEmptyFormat" xml:space="preserve">
|
||||||
<value>Folder {0} is not empty.</value>
|
<value>Folder {0} is not empty.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ItemTypeFolder" xml:space="preserve">
|
||||||
|
<value>Folder</value>
|
||||||
|
</data>
|
||||||
|
<data name="ItemTypeResource" xml:space="preserve">
|
||||||
|
<value>Document</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -39,6 +39,19 @@ namespace WebsitePanel.WebDav.Core
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns IFolder corresponding to path.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">Path to the folder.</param>
|
||||||
|
/// <returns>Folder corresponding to requested path.</returns>
|
||||||
|
public IFolder OpenFolderPaged(string path)
|
||||||
|
{
|
||||||
|
var folder = new WebDavFolder();
|
||||||
|
folder.SetCredentials(Credentials);
|
||||||
|
folder.OpenPaged(path);
|
||||||
|
return folder;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns IResource corresponding to path.
|
/// Returns IResource corresponding to path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -99,10 +99,12 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Attributes\Resources\LocalizedDescriptionAttribute.cs" />
|
||||||
<Compile Include="Config\Entities\AbstractConfigCollection.cs" />
|
<Compile Include="Config\Entities\AbstractConfigCollection.cs" />
|
||||||
<Compile Include="Config\Entities\ElementsRendering.cs" />
|
<Compile Include="Config\Entities\ElementsRendering.cs" />
|
||||||
<Compile Include="Config\Entities\FileIconsDictionary.cs" />
|
<Compile Include="Config\Entities\FileIconsDictionary.cs" />
|
||||||
<Compile Include="Config\Entities\HttpErrorsCollection.cs" />
|
<Compile Include="Config\Entities\HttpErrorsCollection.cs" />
|
||||||
|
<Compile Include="Config\Entities\FilesToIgnoreCollection.cs" />
|
||||||
<Compile Include="Config\Entities\OfficeOnlineCollection.cs" />
|
<Compile Include="Config\Entities\OfficeOnlineCollection.cs" />
|
||||||
<Compile Include="Config\Entities\OwaSupportedBrowsersCollection.cs" />
|
<Compile Include="Config\Entities\OwaSupportedBrowsersCollection.cs" />
|
||||||
<Compile Include="Config\Entities\SessionKeysCollection.cs" />
|
<Compile Include="Config\Entities\SessionKeysCollection.cs" />
|
||||||
|
@ -113,6 +115,8 @@
|
||||||
<Compile Include="Config\WebConfigSections\ElementsRenderingElement.cs" />
|
<Compile Include="Config\WebConfigSections\ElementsRenderingElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\FileIconsElement.cs" />
|
<Compile Include="Config\WebConfigSections\FileIconsElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\FileIconsElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\FileIconsElementCollection.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\FilesToIgnoreElement.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\FilesToIgnoreElementCollection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OfficeOnlineElement.cs" />
|
<Compile Include="Config\WebConfigSections\OfficeOnlineElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OfficeOnlineElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\OfficeOnlineElementCollection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElement.cs" />
|
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElement.cs" />
|
||||||
|
@ -124,6 +128,8 @@
|
||||||
<Compile Include="Config\WebConfigSections\WebdavRootElement.cs" />
|
<Compile Include="Config\WebConfigSections\WebdavRootElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\WebsitePanelConstantUserElement.cs" />
|
<Compile Include="Config\WebConfigSections\WebsitePanelConstantUserElement.cs" />
|
||||||
<Compile Include="Config\WebDavAppConfigManager.cs" />
|
<Compile Include="Config\WebDavAppConfigManager.cs" />
|
||||||
|
<Compile Include="Entities\Account\Enums\FolderViewTypes.cs" />
|
||||||
|
<Compile Include="Entities\Account\UserPortalSettings.cs" />
|
||||||
<Compile Include="Entities\Owa\CheckFileInfo.cs" />
|
<Compile Include="Entities\Owa\CheckFileInfo.cs" />
|
||||||
<Compile Include="Entities\Owa\PutRelativeFile.cs" />
|
<Compile Include="Entities\Owa\PutRelativeFile.cs" />
|
||||||
<Compile Include="Exceptions\ConnectToWebDavServerException.cs" />
|
<Compile Include="Exceptions\ConnectToWebDavServerException.cs" />
|
||||||
|
@ -131,14 +137,18 @@
|
||||||
<Compile Include="Exceptions\UnauthorizedException.cs" />
|
<Compile Include="Exceptions\UnauthorizedException.cs" />
|
||||||
<Compile Include="Exceptions\WebDavException.cs" />
|
<Compile Include="Exceptions\WebDavException.cs" />
|
||||||
<Compile Include="Exceptions\WebDavHttpException.cs" />
|
<Compile Include="Exceptions\WebDavHttpException.cs" />
|
||||||
|
<Compile Include="Extensions\EnumExtensions.cs" />
|
||||||
<Compile Include="Extensions\StringExtensions.cs" />
|
<Compile Include="Extensions\StringExtensions.cs" />
|
||||||
<Compile Include="Extensions\UriExtensions.cs" />
|
<Compile Include="Extensions\UriExtensions.cs" />
|
||||||
|
<Compile Include="Helper\SerializeHelper.cs" />
|
||||||
<Compile Include="IConnectionSettings.cs" />
|
<Compile Include="IConnectionSettings.cs" />
|
||||||
<Compile Include="IFolder.cs" />
|
<Compile Include="IFolder.cs" />
|
||||||
<Compile Include="IHierarchyItem.cs" />
|
<Compile Include="IHierarchyItem.cs" />
|
||||||
<Compile Include="IItemContent.cs" />
|
<Compile Include="IItemContent.cs" />
|
||||||
|
<Compile Include="Interfaces\Managers\Users\IUserSettingsManager.cs" />
|
||||||
<Compile Include="Interfaces\Storages\IKeyValueStorage.cs" />
|
<Compile Include="Interfaces\Storages\IKeyValueStorage.cs" />
|
||||||
<Compile Include="Interfaces\Storages\ITtlStorage.cs" />
|
<Compile Include="Interfaces\Storages\ITtlStorage.cs" />
|
||||||
|
<Compile Include="Managers\Users\UserSettingsManager.cs" />
|
||||||
<Compile Include="Owa\CobaltManager.cs" />
|
<Compile Include="Owa\CobaltManager.cs" />
|
||||||
<Compile Include="Interfaces\Owa\ICobaltManager.cs" />
|
<Compile Include="Interfaces\Owa\ICobaltManager.cs" />
|
||||||
<Compile Include="Interfaces\Owa\IWopiFileManager.cs" />
|
<Compile Include="Interfaces\Owa\IWopiFileManager.cs" />
|
||||||
|
|
|
@ -5,11 +5,13 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using WebsitePanel.WebDav.Core.Security.Authentication.Principals;
|
using WebsitePanel.WebDav.Core.Security.Authentication.Principals;
|
||||||
|
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core
|
namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
public class WspContext
|
public class WspContext
|
||||||
{
|
{
|
||||||
public static WspPrincipal User { get { return HttpContext.Current.User as WspPrincipal; } }
|
public static WspPrincipal User { get { return HttpContext.Current.User as WspPrincipal; } }
|
||||||
|
public static WSP Services { get { return WSP.Services; } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,14 @@ namespace WebsitePanel.WebDavPortal
|
||||||
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
||||||
public static void RegisterBundles(BundleCollection bundles)
|
public static void RegisterBundles(BundleCollection bundles)
|
||||||
{
|
{
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
|
var jQueryBundle = new ScriptBundle("~/bundles/jquery").Include(
|
||||||
"~/Scripts/jquery-{version}.js",
|
"~/Scripts/jquery-{version}.js",
|
||||||
"~/Scripts/jquery.cookie.js"));
|
"~/Scripts/jquery.cookie.js");
|
||||||
|
|
||||||
|
jQueryBundle.IncludeDirectory("~/Scripts", "jquery.dataTables.min.js", true);
|
||||||
|
jQueryBundle.IncludeDirectory("~/Scripts", "dataTables.bootstrap.js", true);
|
||||||
|
|
||||||
|
bundles.Add(jQueryBundle);
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
||||||
"~/Scripts/jquery.validate*"));
|
"~/Scripts/jquery.validate*"));
|
||||||
|
@ -24,21 +29,44 @@ namespace WebsitePanel.WebDavPortal
|
||||||
"~/Scripts/respond.js"));
|
"~/Scripts/respond.js"));
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/appScripts").Include(
|
bundles.Add(new ScriptBundle("~/bundles/appScripts").Include(
|
||||||
"~/Scripts/appScripts/recalculateResourseHeight.js",
|
|
||||||
"~/Scripts/appScripts/uploadingData2.js",
|
|
||||||
"~/Scripts/appScripts/authentication.js",
|
|
||||||
"~/Scripts/appScripts/messages.js",
|
"~/Scripts/appScripts/messages.js",
|
||||||
"~/Scripts/appScripts/fileBrowsing.js",
|
"~/Scripts/appScripts/fileBrowsing.js",
|
||||||
"~/Scripts/appScripts/dialogs.js",
|
"~/Scripts/appScripts/dialogs.js",
|
||||||
"~/Scripts/appScripts/wsp.js"
|
"~/Scripts/appScripts/wsp.js"
|
||||||
));
|
));
|
||||||
|
|
||||||
|
bundles.Add(new ScriptBundle("~/bundles/bigIconsScripts").Include(
|
||||||
|
"~/Scripts/appScripts/recalculateResourseHeight.js",
|
||||||
|
"~/Scripts/appScripts/uploadingData2.js"
|
||||||
|
));
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/authScripts").Include(
|
bundles.Add(new ScriptBundle("~/bundles/authScripts").Include(
|
||||||
"~/Scripts/appScripts/authentication.js"));
|
"~/Scripts/appScripts/authentication.js"));
|
||||||
|
|
||||||
bundles.Add(new StyleBundle("~/Content/css").Include(
|
bundles.Add(new ScriptBundle("~/bundles/file-upload").Include(
|
||||||
|
"~/Scripts/jquery.ui.widget.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/tmpl.min.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/load-image.min.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.iframe-transport.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-process.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-image.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-validate.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-ui.js"
|
||||||
|
));
|
||||||
|
|
||||||
|
var styleBundle = new StyleBundle("~/Content/css");
|
||||||
|
|
||||||
|
styleBundle.Include(
|
||||||
|
"~/Content/jQuery.FileUpload/css/jquery.fileupload.css",
|
||||||
|
"~/Content/jQuery.FileUpload/css/jquery.fileupload-ui.css",
|
||||||
"~/Content/bootstrap.css",
|
"~/Content/bootstrap.css",
|
||||||
"~/Content/site.css"));
|
"~/Content/site.css");
|
||||||
|
|
||||||
|
styleBundle.IncludeDirectory("~/Content", "jquery.datatables.css", true);
|
||||||
|
styleBundle.IncludeDirectory("~/Content", "dataTables.bootstrap.css", true);
|
||||||
|
|
||||||
|
bundles.Add(styleBundle);
|
||||||
|
|
||||||
// Set EnableOptimizations to false for debugging. For more information,
|
// Set EnableOptimizations to false for debugging. For more information,
|
||||||
// visit http://go.microsoft.com/fwlink/?LinkId=301862
|
// visit http://go.microsoft.com/fwlink/?LinkId=301862
|
||||||
|
|
|
@ -26,53 +26,68 @@ namespace WebsitePanel.WebDavPortal
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
routes.MapRoute(
|
#region Owa
|
||||||
name: FileSystemRouteNames.DeleteFiles,
|
|
||||||
url: "files-group-action/delete",
|
|
||||||
defaults: new { controller = "FileSystem", action = "DeleteFiles" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
|
||||||
name: FileSystemRouteNames.UploadFile,
|
|
||||||
url: "upload-file/{org}/{*pathPart}",
|
|
||||||
defaults: new { controller = "FileSystem", action = "UploadFile" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
|
||||||
name: FileSystemRouteNames.DownloadFile,
|
|
||||||
url: "download-file/{org}/{*pathPart}",
|
|
||||||
defaults: new { controller = "FileSystem", action = "DownloadFile" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ViewOfficeOnline,
|
name: FileSystemRouteNames.ViewOfficeOnline,
|
||||||
url: "office365/view/{org}/{*pathPart}",
|
url: "office365/view/{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "ViewOfficeDocument", pathPart = UrlParameter.Optional }
|
defaults:
|
||||||
|
new {controller = "FileSystem", action = "ViewOfficeDocument", pathPart = UrlParameter.Optional}
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.EditOfficeOnline,
|
name: FileSystemRouteNames.EditOfficeOnline,
|
||||||
url: "office365/edit/{org}/{*pathPart}",
|
url: "office365/edit/{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "EditOfficeDocument", pathPart = UrlParameter.Optional }
|
defaults:
|
||||||
|
new {controller = "FileSystem", action = "EditOfficeDocument", pathPart = UrlParameter.Optional}
|
||||||
);
|
);
|
||||||
|
|
||||||
//routes.MapRoute(
|
#endregion
|
||||||
// name: FileSystemRouteNames.ShowOfficeOnlinePath,
|
|
||||||
// url: "office365/{org}/{*pathPart}",
|
#region Enterprise storage
|
||||||
// defaults: new { controller = "FileSystem", action = "ShowOfficeDocument", pathPart = UrlParameter.Optional }
|
|
||||||
// );
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.ChangeWebDavViewType,
|
||||||
|
url: "storage/change-view-type/{viewType}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "ChangeViewType" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.DeleteFiles,
|
||||||
|
url: "storage/files-group-action/delete",
|
||||||
|
defaults: new { controller = "FileSystem", action = "DeleteFiles" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.UploadFile,
|
||||||
|
url: "storage/upload-files/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "UploadFiles" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.DownloadFile,
|
||||||
|
url: "storage/download-file/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "DownloadFile" }
|
||||||
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ShowAdditionalContent,
|
name: FileSystemRouteNames.ShowAdditionalContent,
|
||||||
url: "show-additional-content/{*path}",
|
url: "storage/show-additional-content/{*path}",
|
||||||
defaults: new { controller = "FileSystem", action = "ShowAdditionalContent", path = UrlParameter.Optional }
|
defaults: new { controller = "FileSystem", action = "ShowAdditionalContent", path = UrlParameter.Optional }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.ShowContentDetails,
|
||||||
|
url: "storage/details/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "GetContentDetails", pathPart = UrlParameter.Optional }
|
||||||
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ShowContentPath,
|
name: FileSystemRouteNames.ShowContentPath,
|
||||||
url: "{org}/{*pathPart}",
|
url: "{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "ShowContent", pathPart = UrlParameter.Optional }
|
defaults: new { controller = "FileSystem", action = "ShowContent", pathPart = UrlParameter.Optional }
|
||||||
);
|
);
|
||||||
|
#endregion
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: "Default",
|
name: "Default",
|
||||||
|
|
|
@ -7,7 +7,9 @@ namespace WebsitePanel.WebDavPortal.UI.Routes
|
||||||
{
|
{
|
||||||
public class FileSystemRouteNames
|
public class FileSystemRouteNames
|
||||||
{
|
{
|
||||||
|
public const string ChangeWebDavViewType = "ChangeWebDavViewTypeRoute";
|
||||||
public const string ShowContentPath = "ShowContentRoute";
|
public const string ShowContentPath = "ShowContentRoute";
|
||||||
|
public const string ShowContentDetails = "ShowContentDetailsRoute";
|
||||||
public const string ShowOfficeOnlinePath_ = "ShowOfficeOnlineRoute";
|
public const string ShowOfficeOnlinePath_ = "ShowOfficeOnlineRoute";
|
||||||
public const string ViewOfficeOnline = "ViewOfficeOnlineRoute";
|
public const string ViewOfficeOnline = "ViewOfficeOnlineRoute";
|
||||||
public const string EditOfficeOnline = "EditOfficeOnlineRoute";
|
public const string EditOfficeOnline = "EditOfficeOnlineRoute";
|
|
@ -0,0 +1,24 @@
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* AutoFill styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
div.AutoFill_filler {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
height: 14px;
|
||||||
|
width: 14px;
|
||||||
|
background: url(../images/filler.png) no-repeat center center;
|
||||||
|
z-index: 1002;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.AutoFill_border {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #0063dc;
|
||||||
|
z-index: 1001;
|
||||||
|
|
||||||
|
box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
-moz-box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
-webkit-box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
div.AutoFill_filler{display:none;position:absolute;height:14px;width:14px;background:url(../images/filler.png) no-repeat center center;z-index:1002}div.AutoFill_border{display:none;position:absolute;background-color:#0063dc;z-index:1001;box-shadow:0px 0px 5px #76b4ff;-moz-box-shadow:0px 0px 5px #76b4ff;-webkit-box-shadow:0px 0px 5px #76b4ff}
|
|
@ -0,0 +1,204 @@
|
||||||
|
|
||||||
|
div.dataTables_length label {
|
||||||
|
font-weight: normal;
|
||||||
|
float: left;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_length select {
|
||||||
|
width: 75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_filter label {
|
||||||
|
font-weight: normal;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_filter input {
|
||||||
|
width: 16em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_info {
|
||||||
|
padding-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate ul.pagination {
|
||||||
|
margin: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
max-width: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table thead .sorting,
|
||||||
|
table.table thead .sorting_asc,
|
||||||
|
table.table thead .sorting_desc,
|
||||||
|
table.table thead .sorting_asc_disabled,
|
||||||
|
table.table thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table thead .sorting { background: url('../images/sort_both.png') no-repeat center right; }
|
||||||
|
table.table thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; }
|
||||||
|
table.table thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; }
|
||||||
|
|
||||||
|
table.table thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }
|
||||||
|
table.table thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }
|
||||||
|
|
||||||
|
table.dataTable th:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scrolling */
|
||||||
|
div.dataTables_scrollHead table {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table thead tr:last-child th:first-child,
|
||||||
|
div.dataTables_scrollHead table thead tr:last-child td:first-child {
|
||||||
|
border-bottom-left-radius: 0 !important;
|
||||||
|
border-bottom-right-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody table {
|
||||||
|
border-top: none;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot table {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TableTools styles
|
||||||
|
*/
|
||||||
|
.table tbody tr.active td,
|
||||||
|
.table tbody tr.active th {
|
||||||
|
background-color: #08C;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table tbody tr.active:hover td,
|
||||||
|
.table tbody tr.active:hover th {
|
||||||
|
background-color: #0075b0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-striped tbody tr.active:nth-child(odd) td,
|
||||||
|
.table-striped tbody tr.active:nth-child(odd) th {
|
||||||
|
background-color: #017ebc;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.DTTT_selectable tbody tr {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT .btn {
|
||||||
|
color: #333 !important;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT .btn:hover {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu {
|
||||||
|
z-index: 2003;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu a {
|
||||||
|
color: #333 !important; /* needed only when demo_page.css is included */
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu li {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu li:hover a {
|
||||||
|
background-color: #0088cc;
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TableTools information display */
|
||||||
|
div.DTTT_print_info.modal {
|
||||||
|
height: 150px;
|
||||||
|
margin-top: -75px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_print_info h6 {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_print_info p {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FixedColumns styles
|
||||||
|
*/
|
||||||
|
div.DTFC_LeftHeadWrapper table,
|
||||||
|
div.DTFC_LeftFootWrapper table,
|
||||||
|
div.DTFC_RightHeadWrapper table,
|
||||||
|
div.DTFC_RightFootWrapper table,
|
||||||
|
table.DTFC_Cloned tr.even {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_RightHeadWrapper table ,
|
||||||
|
div.DTFC_LeftHeadWrapper table {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
border-top-right-radius: 0 !important;
|
||||||
|
border-bottom-left-radius: 0 !important;
|
||||||
|
border-bottom-right-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
|
||||||
|
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
|
||||||
|
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
|
||||||
|
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
|
||||||
|
border-bottom-left-radius: 0 !important;
|
||||||
|
border-bottom-right-radius: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_RightBodyWrapper table,
|
||||||
|
div.DTFC_LeftBodyWrapper table {
|
||||||
|
border-top: none;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_RightBodyWrapper tbody tr:first-child th,
|
||||||
|
div.DTFC_RightBodyWrapper tbody tr:first-child td,
|
||||||
|
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
|
||||||
|
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_RightFootWrapper table,
|
||||||
|
div.DTFC_LeftFootWrapper table {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
/*
|
||||||
|
* Namespace DTCR - "DataTables ColReorder" plug-in
|
||||||
|
*/
|
||||||
|
|
||||||
|
table.DTCR_clonedTable {
|
||||||
|
background-color: rgba(255, 255, 255, 0.7);
|
||||||
|
z-index: 202;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTCR_pointer {
|
||||||
|
width: 1px;
|
||||||
|
background-color: #0259C4;
|
||||||
|
z-index: 201;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
table.DTCR_clonedTable{background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
|
|
@ -0,0 +1,185 @@
|
||||||
|
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* ColVis styles
|
||||||
|
*/
|
||||||
|
div.ColVis {
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.ColVis_Button,
|
||||||
|
ul.ColVis_collection li {
|
||||||
|
position: relative;
|
||||||
|
float: left;
|
||||||
|
margin-right: 3px;
|
||||||
|
padding: 5px 8px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
font-size: 0.88em;
|
||||||
|
color: black !important;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
-moz-border-radius: 2px;
|
||||||
|
-ms-border-radius: 2px;
|
||||||
|
-o-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-o-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
box-shadow: 1px 1px 3px #ccc;
|
||||||
|
|
||||||
|
/* Generated by http://www.colorzilla.com/gradient-editor/ */
|
||||||
|
background: #ffffff; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.ColVis_Button:hover,
|
||||||
|
ul.ColVis_collection li:hover {
|
||||||
|
border: 1px solid #666;
|
||||||
|
text-decoration: none !important;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #999;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #999;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #999;
|
||||||
|
-o-box-shadow: 1px 1px 3px #999;
|
||||||
|
box-shadow: 1px 1px 3px #999;
|
||||||
|
|
||||||
|
background: #f3f3f3; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
button.ColVis_Button {
|
||||||
|
height: 30px;
|
||||||
|
padding: 3px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.ColVis_Button::-moz-focus-inner {
|
||||||
|
border: none !important;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.ColVis_Button:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.ColVis_collectionBackground {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background-color: black;
|
||||||
|
z-index: 1100;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection {
|
||||||
|
list-style: none;
|
||||||
|
width: 150px;
|
||||||
|
padding: 8px 8px 4px 8px;
|
||||||
|
margin: 0;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba( 0, 0, 0, 0.4 );
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
background-color: rgba( 255, 255, 255, 0.3 );
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 2002;
|
||||||
|
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
-ms-border-radius: 5px;
|
||||||
|
-o-border-radius: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li {
|
||||||
|
position: relative;
|
||||||
|
height: auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #999;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #999;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #999;
|
||||||
|
-o-box-shadow: 1px 1px 3px #999;
|
||||||
|
box-shadow: 1px 1px 3px #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li.ColVis_Button:hover {
|
||||||
|
border: 1px solid #999;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ul.ColVis_collection li.ColVis_Special {
|
||||||
|
border-color: #555;
|
||||||
|
background: rgb(237,237,237); /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, rgba(237,237,237,1) 0%, rgba(214,214,214,1) 77%, rgba(232,232,232,1) 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, rgba(237,237,237,1) 0%,rgba(214,214,214,1) 77%,rgba(232,232,232,1) 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li.ColVis_Special:hover {
|
||||||
|
background: #e2e2e2; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #d0d0d0 0%,#d5d5d5 89%,#e2e2e2 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
span.ColVis_radio {
|
||||||
|
display: inline-block;
|
||||||
|
width: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.ColVis_catcher {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1101;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disabled {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
div.ColVis{float:right;margin-bottom:1em}button.ColVis_Button,ul.ColVis_collection li{position:relative;float:left;margin-right:3px;padding:5px 8px;border:1px solid #999;cursor:pointer;*cursor:hand;font-size:0.88em;color:black !important;white-space:nowrap;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:1px 1px 3px #ccc;-moz-box-shadow:1px 1px 3px #ccc;-ms-box-shadow:1px 1px 3px #ccc;-o-box-shadow:1px 1px 3px #ccc;box-shadow:1px 1px 3px #ccc;background:#ffffff;background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-ms-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:-o-linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);background:linear-gradient(top, #fff 0%, #f3f3f3 89%, #f9f9f9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 )}.ColVis_Button:hover,ul.ColVis_collection li:hover{border:1px solid #666;text-decoration:none !important;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999;background:#f3f3f3;background:-webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:-o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);background:linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 )}button.ColVis_Button{height:30px;padding:3px 8px}button.ColVis_Button::-moz-focus-inner{border:none !important;padding:0}button.ColVis_Button:active{outline:none}div.ColVis_collectionBackground{position:fixed;top:0;left:0;height:100%;width:100%;background-color:black;z-index:1100}ul.ColVis_collection{list-style:none;width:150px;padding:8px 8px 4px 8px;margin:0;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;-webkit-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-moz-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-ms-box-shadow:3px 3px 5px rgba(0,0,0,0.3);-o-box-shadow:3px 3px 5px rgba(0,0,0,0.3);box-shadow:3px 3px 5px rgba(0,0,0,0.3)}ul.ColVis_collection li{position:relative;height:auto;left:0;right:0;padding:0.5em;display:block;float:none;margin-bottom:4px;-webkit-box-shadow:1px 1px 3px #999;-moz-box-shadow:1px 1px 3px #999;-ms-box-shadow:1px 1px 3px #999;-o-box-shadow:1px 1px 3px #999;box-shadow:1px 1px 3px #999}ul.ColVis_collection li{text-align:left}ul.ColVis_collection li.ColVis_Button:hover{border:1px solid #999;background-color:#f0f0f0}ul.ColVis_collection li span{display:inline-block;padding-left:0.5em;cursor:pointer}ul.ColVis_collection li.ColVis_Special{border-color:#555;background:#ededed;background:-webkit-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-moz-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-ms-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:-o-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);background:linear-gradient(to bottom, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 )}ul.ColVis_collection li.ColVis_Special:hover{background:#e2e2e2;background:-webkit-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-moz-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-ms-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:-o-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);background:linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 )}span.ColVis_radio{display:inline-block;width:20px}div.ColVis_catcher{position:absolute;z-index:1101}.disabled{color:#999}
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
button.ColVis_Button,
|
||||||
|
ul.ColVis_collection li {
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li {
|
||||||
|
clear: both;
|
||||||
|
display: block;
|
||||||
|
text-align: left;
|
||||||
|
margin: -1px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.ColVis_collection li span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
|
||||||
|
|
||||||
|
/* Block out what is behind the fixed column's header and footer */
|
||||||
|
table.DTFC_Cloned thead,
|
||||||
|
table.DTFC_Cloned tfoot {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Block out the gap above the scrollbar on the right, when there is a fixed
|
||||||
|
* right column
|
||||||
|
*/
|
||||||
|
div.DTFC_Blocker {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftWrapper table.dataTable,
|
||||||
|
div.DTFC_RightWrapper table.dataTable {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftWrapper table.dataTable.no-footer,
|
||||||
|
div.DTFC_RightWrapper table.dataTable.no-footer {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
div.FixedHeader_Cloned th,
|
||||||
|
div.FixedHeader_Cloned td {
|
||||||
|
background-color: white !important;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
div.FixedHeader_Cloned th,div.FixedHeader_Cloned td{background-color:white !important}
|
|
@ -0,0 +1,213 @@
|
||||||
|
div.dataTables_wrapper {
|
||||||
|
margin-bottom: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_length label,
|
||||||
|
div.dataTables_filter label,
|
||||||
|
div.dataTables_info {
|
||||||
|
color: #999;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_length {
|
||||||
|
padding-top: 6px;
|
||||||
|
}
|
||||||
|
div.dataTables_length label {
|
||||||
|
float: left;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_length select {
|
||||||
|
width: 75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_filter label {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
div.dataTables_filter input {
|
||||||
|
display: inline-block !important;
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_info {
|
||||||
|
padding-top: 2px;
|
||||||
|
font-size: 0.875em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin-bottom: 0.5em !important;
|
||||||
|
max-width: none !important;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable thead .sorting { background: url('images/sort_both.png') no-repeat center right; }
|
||||||
|
table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }
|
||||||
|
table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }
|
||||||
|
|
||||||
|
table.dataTable thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }
|
||||||
|
table.dataTable thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }
|
||||||
|
|
||||||
|
table.dataTable th:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Scrolling */
|
||||||
|
div.dataTables_scrollHead table {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody table {
|
||||||
|
border-top: none;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot table {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TableTools styles
|
||||||
|
*/
|
||||||
|
.table tbody tr.active td,
|
||||||
|
.table tbody tr.active th {
|
||||||
|
background-color: #08C;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table tbody tr.active:hover td,
|
||||||
|
.table tbody tr.active:hover th {
|
||||||
|
background-color: #0075b0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-striped tbody tr.active:nth-child(odd) td,
|
||||||
|
.table-striped tbody tr.active:nth-child(odd) th {
|
||||||
|
background-color: #017ebc;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.DTTT_selectable tbody tr {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT {
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT .button:hover {
|
||||||
|
text-decoration: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu li {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.DTTT_dropdown.dropdown-menu li:hover a {
|
||||||
|
background-color: #0088cc;
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TableTools information display */
|
||||||
|
.DTTT_print_info {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 400px;
|
||||||
|
height: 150px;
|
||||||
|
margin-left: -200px;
|
||||||
|
margin-top: -75px;
|
||||||
|
text-align: center;
|
||||||
|
color: #333;
|
||||||
|
padding: 10px 30px;
|
||||||
|
|
||||||
|
background: #ffffff; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
||||||
|
|
||||||
|
opacity: 0.95;
|
||||||
|
|
||||||
|
border: 1px solid black;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||||
|
|
||||||
|
-webkit-border-radius: 6px;
|
||||||
|
-moz-border-radius: 6px;
|
||||||
|
-ms-border-radius: 6px;
|
||||||
|
-o-border-radius: 6px;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_print_info h6 {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_print_info p {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FixedColumns styles
|
||||||
|
*/
|
||||||
|
div.DTFC_LeftHeadWrapper table,
|
||||||
|
div.DTFC_LeftFootWrapper table,
|
||||||
|
table.DTFC_Cloned tr.even {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftHeadWrapper table {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftBodyWrapper table {
|
||||||
|
border-top: none;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
|
||||||
|
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTFC_LeftFootWrapper table {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,316 @@
|
||||||
|
/*
|
||||||
|
* Table styles
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
clear: both;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 0;
|
||||||
|
/*
|
||||||
|
* Header and footer styles
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Body styles
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable thead td,
|
||||||
|
table.dataTable tfoot th,
|
||||||
|
table.dataTable tfoot td {
|
||||||
|
padding: 4px 10px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable tfoot th {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
table.dataTable thead th:active,
|
||||||
|
table.dataTable thead td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper {
|
||||||
|
position: relative;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper span {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
right: -5px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default {
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr.selected {
|
||||||
|
background-color: #b0bed9;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th,
|
||||||
|
table.dataTable tbody td {
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
table.dataTable th.center,
|
||||||
|
table.dataTable td.center,
|
||||||
|
table.dataTable td.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable th.right,
|
||||||
|
table.dataTable td.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody tr:first-child th,
|
||||||
|
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||||
|
table.dataTable.display tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
border-right: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr:first-child th,
|
||||||
|
table.dataTable.cell-border tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
|
||||||
|
background-color: #abb9d3;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover,
|
||||||
|
table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
|
||||||
|
table.dataTable.display tbody tr.odd:hover,
|
||||||
|
table.dataTable.display tbody tr.even:hover {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr > .sorting_3 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_3 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b3cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a7b5ce;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b6d0;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: #fbfbfb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #adbbd6;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
|
||||||
|
background-color: #afbdd8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
|
||||||
|
background-color: #eaeaea;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a1aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a2afc8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a4b2cb;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable,
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
*zoom: 1;
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_info {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
padding-top: 0.55em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 1.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin-left: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none !important;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
color: #333333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
margin-left: -50%;
|
||||||
|
margin-top: -25px;
|
||||||
|
padding-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scrollBody {
|
||||||
|
*margin-top: -1px;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-widget-header {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-toolbar {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
|
@ -0,0 +1,408 @@
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Colour customisation
|
||||||
|
//
|
||||||
|
|
||||||
|
// Border between the header (and footer) and the table body
|
||||||
|
$table-header-border: 1px solid #111;
|
||||||
|
|
||||||
|
// Border of rows / cells
|
||||||
|
$table-body-border: 1px solid #ddd;
|
||||||
|
|
||||||
|
// Row background colour (hover, striping etc are all based on this colour and
|
||||||
|
// calculated automatically)
|
||||||
|
$table-row-background: #ffffff;
|
||||||
|
|
||||||
|
// Row colour, when selected (tr.selected)
|
||||||
|
$table-row-selected: #B0BED9;
|
||||||
|
|
||||||
|
// Text colour of the interaction control elements (info, filter, paging etc)
|
||||||
|
$table-control-color: #333;
|
||||||
|
|
||||||
|
// Highlight colour of the paging button for the current page
|
||||||
|
$table-paging-button-active: #dcdcdc;
|
||||||
|
|
||||||
|
// Hover colour of paging buttons on mouse over
|
||||||
|
$table-paging-button-hover: #111;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Functions / mixins
|
||||||
|
//
|
||||||
|
@function tint( $color, $percent ) {
|
||||||
|
@return mix(white, $color, $percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@function shade( $color, $percent ) {
|
||||||
|
@return mix(black, $color, $percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin gradient( $from, $to ) {
|
||||||
|
background-color: $from;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$from), color-stop(100%,$to)); /* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, $from 0%, $to 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, $from 0%, $to 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, $from 0%, $to 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, $from 0%, $to 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, $from 0%, $to 100%); /* W3C */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Table styles
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
clear: both;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header and footer styles
|
||||||
|
*/
|
||||||
|
thead,
|
||||||
|
tfoot {
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 4px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th,
|
||||||
|
thead td {
|
||||||
|
&:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sorting
|
||||||
|
thead {
|
||||||
|
.sorting_asc,
|
||||||
|
.sorting_desc,
|
||||||
|
.sorting {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
th div.DataTables_sort_wrapper {
|
||||||
|
position: relative;
|
||||||
|
padding-right: 10px;
|
||||||
|
|
||||||
|
span {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
right: -5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
th.ui-state-default {
|
||||||
|
border-right-width: 0;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Body styles
|
||||||
|
*/
|
||||||
|
tbody {
|
||||||
|
tr {
|
||||||
|
background-color: $table-row-background;
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
background-color: $table-row-selected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
th.center,
|
||||||
|
td.center,
|
||||||
|
td.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.right,
|
||||||
|
td.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Stripe classes - add "row-border" class to the table to activate
|
||||||
|
&.row-border tbody,
|
||||||
|
&.display tbody {
|
||||||
|
th, td {
|
||||||
|
border-top: $table-body-border;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:first-child th,
|
||||||
|
tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Stripe classes - add "cell-border" class to the table to activate
|
||||||
|
&.cell-border tbody {
|
||||||
|
th, td {
|
||||||
|
border-top: $table-body-border;
|
||||||
|
border-right: $table-body-border;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr th:first-child,
|
||||||
|
tr td:first-child {
|
||||||
|
border-left: $table-body-border;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:first-child th,
|
||||||
|
tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Stripe classes - add "stripe" class to the table to activate
|
||||||
|
&.stripe tbody,
|
||||||
|
&.display tbody {
|
||||||
|
tr.odd {
|
||||||
|
background-color: shade($table-row-background, 2.35%); // shade by f9
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
background-color: shade($table-row-selected, 2.35%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Hover classes - add "hover" class to the table to activate
|
||||||
|
&.hover tbody,
|
||||||
|
&.display tbody {
|
||||||
|
tr:hover,
|
||||||
|
tr.odd:hover,
|
||||||
|
tr.even:hover {
|
||||||
|
background-color: shade($table-row-background, 3.6%); // shade by f5
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
background-color: shade($table-row-selected, 3.6%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Sort column highlighting - add "hover" class to the table to activate
|
||||||
|
&.order-column,
|
||||||
|
&.display {
|
||||||
|
tbody {
|
||||||
|
tr>.sorting_1,
|
||||||
|
tr>.sorting_2,
|
||||||
|
tr>.sorting_3 {
|
||||||
|
background-color: shade($table-row-background, 2%); // shade by fa
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected>.sorting_1,
|
||||||
|
tr.selected>.sorting_2,
|
||||||
|
tr.selected>.sorting_3 {
|
||||||
|
background-color: shade($table-row-selected, 2%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.display tbody,
|
||||||
|
&.order-column.stripe tbody {
|
||||||
|
tr.odd {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-background, 5.4%); } // shade by f1
|
||||||
|
>.sorting_2 { background-color: shade($table-row-background, 4.7%); } // shade by f3
|
||||||
|
>.sorting_3 { background-color: shade($table-row-background, 3.9%); } // shade by f5
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-selected, 5.4%); }
|
||||||
|
>.sorting_2 { background-color: shade($table-row-selected, 4.7%); }
|
||||||
|
>.sorting_3 { background-color: shade($table-row-selected, 3.9%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.even {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-background, 2%); } // shade by fa
|
||||||
|
>.sorting_2 { background-color: shade($table-row-background, 1.2%); } // shade by fc
|
||||||
|
>.sorting_3 { background-color: shade($table-row-background, 0.4%); } // shade by fe
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-selected, 2%); }
|
||||||
|
>.sorting_2 { background-color: shade($table-row-selected, 1.2%); }
|
||||||
|
>.sorting_3 { background-color: shade($table-row-selected, 0.4%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.display tbody,
|
||||||
|
&.order-column.hover tbody {
|
||||||
|
tr:hover,
|
||||||
|
tr.odd:hover,
|
||||||
|
tr.even:hover {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-background, 8.2%); } // shade by ea
|
||||||
|
>.sorting_2 { background-color: shade($table-row-background, 7.5%); } // shade by ec
|
||||||
|
>.sorting_3 { background-color: shade($table-row-background, 6.3%); } // shade by ef
|
||||||
|
|
||||||
|
&.selected {
|
||||||
|
>.sorting_1 { background-color: shade($table-row-selected, 8.2%); }
|
||||||
|
>.sorting_2 { background-color: shade($table-row-selected, 7.5%); }
|
||||||
|
>.sorting_3 { background-color: shade($table-row-selected, 6.3%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Its not uncommon to use * {border-box} now, but it messes up the column width
|
||||||
|
// calculations, so use content-box for the table and cells
|
||||||
|
table.dataTable,
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
*zoom: 1;
|
||||||
|
|
||||||
|
// Page length options
|
||||||
|
.dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filtering input
|
||||||
|
.dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Table info
|
||||||
|
.dataTables_info {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
padding-top: 0.55em;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Paging
|
||||||
|
.dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
.fg-button {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 1.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin-left: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none !important;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
|
||||||
|
color: $table-control-color !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fg-button:first-child {
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fg-button:last-child {
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Processing
|
||||||
|
.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
margin-left: -50%;
|
||||||
|
margin-top: -25px;
|
||||||
|
padding-top: 20px;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba($table-row-background, 0)), color-stop(25%,rgba($table-row-background, 0.9)), color-stop(75%,rgba($table-row-background, 0.9)), color-stop(100%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(left, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to right, rgba($table-row-background, 0) 0%, rgba($table-row-background, 0.9) 25%, rgba($table-row-background, 0.9) 75%, rgba($table-row-background, 0) 100%); /* W3C */
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataTables_length,
|
||||||
|
.dataTables_filter,
|
||||||
|
.dataTables_info,
|
||||||
|
.dataTables_processing,
|
||||||
|
.dataTables_paginate {
|
||||||
|
color: $table-control-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scrolling
|
||||||
|
.dataTables_scroll {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataTables_scrollBody {
|
||||||
|
*margin-top: -1px;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.ui-widget-header {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-toolbar {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Self clear the wrapper
|
||||||
|
&:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
zoom: 1; // Poor old IE
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
table.KeyTable th.focus,
|
||||||
|
table.KeyTable td.focus {
|
||||||
|
outline: 3px solid #3366FF;
|
||||||
|
outline-offset: -3px;
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
table.KeyTable th.focus,table.KeyTable td.focus{outline:3px solid #3366FF;outline-offset:-3px}
|
|
@ -0,0 +1,93 @@
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody td:first-child,
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody th:first-child {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody td:first-child:before,
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody th:first-child:before {
|
||||||
|
top: 8px;
|
||||||
|
left: 4px;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid white;
|
||||||
|
border-radius: 16px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 14px;
|
||||||
|
box-shadow: 0 0 3px #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
content: '+';
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody td:first-child.dataTables_empty:before,
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody th:first-child.dataTables_empty:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody tr.parent td:first-child:before,
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody tr.parent th:first-child:before {
|
||||||
|
content: '-';
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-inline.collapsed tbody tr.child td:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-column tbody td.control,
|
||||||
|
table.dataTable.dtr-column tbody th.control {
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-column tbody td.control:before,
|
||||||
|
table.dataTable.dtr-column tbody th.control:before {
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
margin-top: -10px;
|
||||||
|
margin-left: -10px;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid white;
|
||||||
|
border-radius: 16px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 14px;
|
||||||
|
box-shadow: 0 0 3px #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
content: '+';
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable.dtr-column tbody tr.parent td.control:before,
|
||||||
|
table.dataTable.dtr-column tbody tr.parent th.control:before {
|
||||||
|
content: '-';
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child {
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child:hover {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child ul {
|
||||||
|
display: inline-block;
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child ul li {
|
||||||
|
border-bottom: 1px solid #efefef;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child ul li:first-child {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child ul li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
table.dataTable tr.child span.dtr-title {
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 75px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
|
@ -0,0 +1,132 @@
|
||||||
|
|
||||||
|
//
|
||||||
|
// Mixins
|
||||||
|
//
|
||||||
|
@mixin control() {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid white;
|
||||||
|
border-radius: 16px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 14px;
|
||||||
|
box-shadow: 0 0 3px #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin control-open() {
|
||||||
|
content: '+';
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin control-close() {
|
||||||
|
content: '-';
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Table styles
|
||||||
|
//
|
||||||
|
table.dataTable {
|
||||||
|
// Styling for the `inline` type
|
||||||
|
&.dtr-inline.collapsed tbody {
|
||||||
|
td:first-child,
|
||||||
|
th:first-child {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
top: 8px;
|
||||||
|
left: 4px;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
@include control;
|
||||||
|
@include control-open;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.dataTables_empty:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.parent {
|
||||||
|
td:first-child:before,
|
||||||
|
th:first-child:before {
|
||||||
|
@include control-close;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.child td:before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Styling for the `column` type
|
||||||
|
&.dtr-column tbody {
|
||||||
|
td.control,
|
||||||
|
th.control {
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
margin-top: -10px;
|
||||||
|
margin-left: -10px;
|
||||||
|
@include control;
|
||||||
|
@include control-open;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.parent {
|
||||||
|
td.control:before,
|
||||||
|
th.control:before {
|
||||||
|
@include control-close;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Child row styling
|
||||||
|
tr.child {
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
display: inline-block;
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
border-bottom: 1px solid #efefef;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span.dtr-title {
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 75px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.dtr-data {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Namespace: DTS (DataTables Scroller)
|
||||||
|
*/
|
||||||
|
|
||||||
|
div.DTS tbody th,
|
||||||
|
div.DTS tbody td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTS tbody tr.even {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTS div.DTS_Loading {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
height: 20px;
|
||||||
|
margin-top: -20px;
|
||||||
|
margin-left: -100px;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
border: 1px solid #999;
|
||||||
|
padding: 20px 0;
|
||||||
|
text-align: center;
|
||||||
|
background-color: white;
|
||||||
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTS div.dataTables_scrollHead,
|
||||||
|
div.DTS div.dataTables_scrollFoot {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTS div.dataTables_scrollBody {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTS div.dataTables_scroll {
|
||||||
|
background: url('../images/loading-background.png') repeat 0 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS tbody tr.even{background-color:white}div.DTS div.DTS_Loading{position:absolute;top:50%;left:50%;width:200px;height:20px;margin-top:-20px;margin-left:-100px;z-index:1;border:1px solid #999;padding:20px 0;text-align:center;background-color:white;background-color:rgba(255,255,255,0.5)}div.DTS div.dataTables_scrollHead,div.DTS div.dataTables_scrollFoot{background-color:white}div.DTS div.dataTables_scrollBody{z-index:2}div.DTS div.dataTables_scroll{background:url("../images/loading-background.png") repeat 0 0}
|
|
@ -0,0 +1,361 @@
|
||||||
|
/*
|
||||||
|
* File: TableTools.css
|
||||||
|
* Description: Styles for TableTools 2
|
||||||
|
* Author: Allan Jardine (www.sprymedia.co.uk)
|
||||||
|
* Language: Javascript
|
||||||
|
* License: GPL v2 / 3 point BSD
|
||||||
|
* Project: DataTables
|
||||||
|
*
|
||||||
|
* Copyright 2009-2012 Allan Jardine, all rights reserved.
|
||||||
|
*
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
*
|
||||||
|
* CSS name space:
|
||||||
|
* DTTT DataTables TableTools
|
||||||
|
*
|
||||||
|
* Style sheet provides:
|
||||||
|
* CONTAINER TableTools container element and styles applying to all components
|
||||||
|
* BUTTON_STYLES Action specific button styles
|
||||||
|
* SELECTING Row selection styles
|
||||||
|
* COLLECTIONS Drop down list (collection) styles
|
||||||
|
* PRINTING Print display styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CONTAINER
|
||||||
|
* TableTools container element and styles applying to all components
|
||||||
|
*/
|
||||||
|
div.DTTT_container {
|
||||||
|
position: relative;
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 640px) {
|
||||||
|
div.DTTT_container {
|
||||||
|
float: none !important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_container:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
button.DTTT_button,
|
||||||
|
div.DTTT_button,
|
||||||
|
a.DTTT_button {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 3px;
|
||||||
|
padding: 5px 8px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
font-size: 0.88em;
|
||||||
|
color: black !important;
|
||||||
|
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
-moz-border-radius: 2px;
|
||||||
|
-ms-border-radius: 2px;
|
||||||
|
-o-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
-o-box-shadow: 1px 1px 3px #ccc;
|
||||||
|
box-shadow: 1px 1px 3px #ccc;
|
||||||
|
|
||||||
|
/* Generated by http://www.colorzilla.com/gradient-editor/ */
|
||||||
|
background: #ffffff; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Buttons are cunning border-box sizing - we can't just use that for A and DIV due to IE6/7 */
|
||||||
|
button.DTTT_button {
|
||||||
|
height: 30px;
|
||||||
|
padding: 3px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.DTTT_button embed {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.DTTT_button:hover,
|
||||||
|
div.DTTT_button:hover,
|
||||||
|
a.DTTT_button:hover {
|
||||||
|
border: 1px solid #666;
|
||||||
|
text-decoration: none !important;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #999;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #999;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #999;
|
||||||
|
-o-box-shadow: 1px 1px 3px #999;
|
||||||
|
box-shadow: 1px 1px 3px #999;
|
||||||
|
|
||||||
|
background: #f3f3f3; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #f3f3f3 0%,#e2e2e2 89%,#f4f4f4 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
button.DTTT_button:focus,
|
||||||
|
div.DTTT_button:focus,
|
||||||
|
a.DTTT_button:focus {
|
||||||
|
border: 1px solid #426c9e;
|
||||||
|
text-shadow: 0 1px 0 #c4def1;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
background-color: #a3d0ef 100%;
|
||||||
|
background-image: -webkit-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);
|
||||||
|
background-image: -moz-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);
|
||||||
|
background-image: -ms-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);
|
||||||
|
background-image: -o-linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);
|
||||||
|
background-image: linear-gradient(top, #a3d0ef 0%, #79ace9 65%, #a3d0ef 100%);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#a3d0ef', EndColorStr='#a3d0ef');
|
||||||
|
}
|
||||||
|
|
||||||
|
button.DTTT_button:active,
|
||||||
|
div.DTTT_button:active,
|
||||||
|
a.DTTT_button:active {
|
||||||
|
-webkit-box-shadow: inset 1px 1px 3px #999999;
|
||||||
|
-moz-box-shadow: inset 1px 1px 3px #999999;
|
||||||
|
box-shadow: inset 1px 1px 3px #999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.DTTT_disabled,
|
||||||
|
div.DTTT_disabled,
|
||||||
|
a.DTTT_disabled {
|
||||||
|
color: #999;
|
||||||
|
border: 1px solid #d0d0d0;
|
||||||
|
|
||||||
|
background: #ffffff; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #ffffff 0%,#f9f9f9 89%,#fafafa 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 ); /* IE6-9 */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BUTTON_STYLES
|
||||||
|
* Action specific button styles
|
||||||
|
* If you want images - comment this back in
|
||||||
|
|
||||||
|
a.DTTT_button_csv,
|
||||||
|
a.DTTT_button_xls,
|
||||||
|
a.DTTT_button_copy,
|
||||||
|
a.DTTT_button_pdf,
|
||||||
|
a.DTTT_button_print {
|
||||||
|
padding-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.DTTT_button_csv span,
|
||||||
|
a.DTTT_button_xls span,
|
||||||
|
a.DTTT_button_copy span,
|
||||||
|
a.DTTT_button_pdf span,
|
||||||
|
a.DTTT_button_print span {
|
||||||
|
display: inline-block;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; }
|
||||||
|
a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; }
|
||||||
|
|
||||||
|
a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; }
|
||||||
|
a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; }
|
||||||
|
|
||||||
|
a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; }
|
||||||
|
a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; }
|
||||||
|
|
||||||
|
a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; }
|
||||||
|
a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; }
|
||||||
|
|
||||||
|
a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; }
|
||||||
|
a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; }
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
button.DTTT_button_collection span {
|
||||||
|
padding-right: 17px;
|
||||||
|
background: url(../images/collection.png) no-repeat center right;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.DTTT_button_collection:hover span {
|
||||||
|
padding-right: 17px;
|
||||||
|
background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SELECTING
|
||||||
|
* Row selection styles
|
||||||
|
*/
|
||||||
|
table.DTTT_selectable tbody tr {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.odd {
|
||||||
|
background-color: #9FAFD1;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.odd td.sorting_1 {
|
||||||
|
background-color: #9FAFD1;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.odd td.sorting_2 {
|
||||||
|
background-color: #9FAFD1;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.odd td.sorting_3 {
|
||||||
|
background-color: #9FAFD1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.even {
|
||||||
|
background-color: #B0BED9;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.even td.sorting_1 {
|
||||||
|
background-color: #B0BED9;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.even td.sorting_2 {
|
||||||
|
background-color: #B0BED9;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.DTTT_selected.even td.sorting_3 {
|
||||||
|
background-color: #B0BED9;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* COLLECTIONS
|
||||||
|
* Drop down list (collection) styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
div.DTTT_collection {
|
||||||
|
width: 150px;
|
||||||
|
padding: 8px 8px 4px 8px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba( 0, 0, 0, 0.4 );
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
background-color: rgba( 255, 255, 255, 0.3 );
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 2002;
|
||||||
|
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
-ms-border-radius: 5px;
|
||||||
|
-o-border-radius: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
-o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_collection_background {
|
||||||
|
background: transparent url(../images/background.png) repeat top left;
|
||||||
|
z-index: 2001;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.DTTT_collection button.DTTT_button,
|
||||||
|
div.DTTT_collection div.DTTT_button,
|
||||||
|
div.DTTT_collection a.DTTT_button {
|
||||||
|
position: relative;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
float: none;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 1px 1px 3px #999;
|
||||||
|
-moz-box-shadow: 1px 1px 3px #999;
|
||||||
|
-ms-box-shadow: 1px 1px 3px #999;
|
||||||
|
-o-box-shadow: 1px 1px 3px #999;
|
||||||
|
box-shadow: 1px 1px 3px #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PRINTING
|
||||||
|
* Print display styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
.DTTT_print_info {
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 400px;
|
||||||
|
height: 150px;
|
||||||
|
margin-left: -200px;
|
||||||
|
margin-top: -75px;
|
||||||
|
text-align: center;
|
||||||
|
color: #333;
|
||||||
|
padding: 10px 30px;
|
||||||
|
|
||||||
|
background: #ffffff; /* Old browsers */
|
||||||
|
background: -webkit-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* Opera 11.10+ */
|
||||||
|
background: linear-gradient(top, #ffffff 0%,#f3f3f3 89%,#f9f9f9 100%); /* W3C */
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); /* IE6-9 */
|
||||||
|
|
||||||
|
opacity: 0.95;
|
||||||
|
|
||||||
|
border: 1px solid black;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||||
|
|
||||||
|
-webkit-border-radius: 6px;
|
||||||
|
-moz-border-radius: 6px;
|
||||||
|
-ms-border-radius: 6px;
|
||||||
|
-o-border-radius: 6px;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
-o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.DTTT_print_info h6 {
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 28px;
|
||||||
|
margin: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.DTTT_print_info p {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,476 @@
|
||||||
|
/*
|
||||||
|
* Table styles
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
clear: both;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 0;
|
||||||
|
/*
|
||||||
|
* Header and footer styles
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Body styles
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable tfoot th {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable thead td {
|
||||||
|
padding: 10px 18px;
|
||||||
|
border-bottom: 1px solid #111111;
|
||||||
|
}
|
||||||
|
table.dataTable thead th:active,
|
||||||
|
table.dataTable thead td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable tfoot th,
|
||||||
|
table.dataTable tfoot td {
|
||||||
|
padding: 10px 18px 6px 18px;
|
||||||
|
border-top: 1px solid #111111;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
background: url("../images/sort_both.png") no-repeat center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc {
|
||||||
|
background: url("../images/sort_asc.png") no-repeat center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc {
|
||||||
|
background: url("../images/sort_desc.png") no-repeat center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc_disabled {
|
||||||
|
background: url("../images/sort_asc_disabled.png") no-repeat center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
background: url("../images/sort_desc_disabled.png") no-repeat center right;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr.selected {
|
||||||
|
background-color: #b0bed9;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th,
|
||||||
|
table.dataTable tbody td {
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody tr:first-child th,
|
||||||
|
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||||
|
table.dataTable.display tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
border-right: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr:first-child th,
|
||||||
|
table.dataTable.cell-border tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
|
||||||
|
background-color: #abb9d3;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover,
|
||||||
|
table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
|
||||||
|
table.dataTable.display tbody tr.odd:hover,
|
||||||
|
table.dataTable.display tbody tr.even:hover {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr > .sorting_3 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_3 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b3cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a7b5ce;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b6d0;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: #fbfbfb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #adbbd6;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
|
||||||
|
background-color: #afbdd8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
|
||||||
|
background-color: #eaeaea;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a1aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a2afc8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a4b2cb;
|
||||||
|
}
|
||||||
|
table.dataTable.no-footer {
|
||||||
|
border-bottom: 1px solid #111111;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable.compact thead th,
|
||||||
|
table.dataTable.compact thead td {
|
||||||
|
padding: 5px 9px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tfoot th,
|
||||||
|
table.dataTable.compact tfoot td {
|
||||||
|
padding: 5px 9px 3px 9px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tbody th,
|
||||||
|
table.dataTable.compact tbody td {
|
||||||
|
padding: 4px 5px;
|
||||||
|
}
|
||||||
|
table.dataTable th.dt-left,
|
||||||
|
table.dataTable td.dt-left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table.dataTable th.dt-center,
|
||||||
|
table.dataTable td.dt-center,
|
||||||
|
table.dataTable td.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable th.dt-right,
|
||||||
|
table.dataTable td.dt-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table.dataTable th.dt-justify,
|
||||||
|
table.dataTable td.dt-justify {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
table.dataTable th.dt-nowrap,
|
||||||
|
table.dataTable td.dt-nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.dt-head-left,
|
||||||
|
table.dataTable thead td.dt-head-left,
|
||||||
|
table.dataTable tfoot th.dt-head-left,
|
||||||
|
table.dataTable tfoot td.dt-head-left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.dt-head-center,
|
||||||
|
table.dataTable thead td.dt-head-center,
|
||||||
|
table.dataTable tfoot th.dt-head-center,
|
||||||
|
table.dataTable tfoot td.dt-head-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.dt-head-right,
|
||||||
|
table.dataTable thead td.dt-head-right,
|
||||||
|
table.dataTable tfoot th.dt-head-right,
|
||||||
|
table.dataTable tfoot td.dt-head-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.dt-head-justify,
|
||||||
|
table.dataTable thead td.dt-head-justify,
|
||||||
|
table.dataTable tfoot th.dt-head-justify,
|
||||||
|
table.dataTable tfoot td.dt-head-justify {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.dt-head-nowrap,
|
||||||
|
table.dataTable thead td.dt-head-nowrap,
|
||||||
|
table.dataTable tfoot th.dt-head-nowrap,
|
||||||
|
table.dataTable tfoot td.dt-head-nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th.dt-body-left,
|
||||||
|
table.dataTable tbody td.dt-body-left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th.dt-body-center,
|
||||||
|
table.dataTable tbody td.dt-body-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th.dt-body-right,
|
||||||
|
table.dataTable tbody td.dt-body-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th.dt-body-justify,
|
||||||
|
table.dataTable tbody td.dt-body-justify {
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th.dt-body-nowrap,
|
||||||
|
table.dataTable tbody td.dt-body-nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable,
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
*zoom: 1;
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_info {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
padding-top: 0.755em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
padding-top: 0.25em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 1.5em;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
margin-left: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none !important;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
color: #333333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||||
|
color: #333333 !important;
|
||||||
|
border: 1px solid #cacaca;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, white 0%, gainsboro 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, white 0%, gainsboro 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, white 0%, gainsboro 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, white 0%, gainsboro 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, white 0%, gainsboro 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
|
||||||
|
cursor: default;
|
||||||
|
color: #666 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||||
|
color: white !important;
|
||||||
|
border: 1px solid #111111;
|
||||||
|
background-color: #585858;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, #585858 0%, #111111 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #585858 0%, #111111 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #585858 0%, #111111 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #585858 0%, #111111 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, #585858 0%, #111111 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button:active {
|
||||||
|
outline: none;
|
||||||
|
background-color: #2b2b2b;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);
|
||||||
|
/* W3C */
|
||||||
|
box-shadow: inset 0 0 3px #111;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
margin-left: -50%;
|
||||||
|
margin-top: -25px;
|
||||||
|
padding-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
|
||||||
|
*margin-top: -1px;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing,
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||||
|
border-bottom: 1px solid #111111;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer div.dataTables_scrollHead table,
|
||||||
|
.dataTables_wrapper.no-footer div.dataTables_scrollBody table {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 640px) {
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,330 @@
|
||||||
|
/*
|
||||||
|
* Table styles
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
clear: both;
|
||||||
|
border-collapse: separate;
|
||||||
|
border-spacing: 0;
|
||||||
|
/*
|
||||||
|
* Header and footer styles
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Body styles
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable thead td,
|
||||||
|
table.dataTable tfoot th,
|
||||||
|
table.dataTable tfoot td {
|
||||||
|
padding: 4px 10px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th,
|
||||||
|
table.dataTable tfoot th {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
table.dataTable thead th:active,
|
||||||
|
table.dataTable thead td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper {
|
||||||
|
position: relative;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper span {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
right: -5px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default {
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr.selected {
|
||||||
|
background-color: #b0bed9;
|
||||||
|
}
|
||||||
|
table.dataTable tbody th,
|
||||||
|
table.dataTable tbody td {
|
||||||
|
padding: 8px 10px;
|
||||||
|
}
|
||||||
|
table.dataTable th.center,
|
||||||
|
table.dataTable td.center,
|
||||||
|
table.dataTable td.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable th.right,
|
||||||
|
table.dataTable td.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.row-border tbody tr:first-child th,
|
||||||
|
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||||
|
table.dataTable.display tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||||
|
border-top: 1px solid #dddddd;
|
||||||
|
border-right: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid #dddddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr:first-child th,
|
||||||
|
table.dataTable.cell-border tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
|
||||||
|
background-color: #abb9d3;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover,
|
||||||
|
table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover,
|
||||||
|
table.dataTable.display tbody tr.odd:hover,
|
||||||
|
table.dataTable.display tbody tr.even:hover {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr > .sorting_3 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.selected > .sorting_3 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
|
||||||
|
background-color: whitesmoke;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b3cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a7b5ce;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b6d0;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: #fbfbfb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #adbbd6;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 {
|
||||||
|
background-color: #afbdd8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 {
|
||||||
|
background-color: #eaeaea;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 {
|
||||||
|
background-color: #eeeeee;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a1aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a2afc8;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3,
|
||||||
|
table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a4b2cb;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable,
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
*zoom: 1;
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_info {
|
||||||
|
clear: both;
|
||||||
|
float: left;
|
||||||
|
padding-top: 0.55em;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 1.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin-left: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none !important;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
color: #333333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
margin-left: -50%;
|
||||||
|
margin-top: -25px;
|
||||||
|
padding-top: 20px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scrollBody {
|
||||||
|
*margin-top: -1px;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-widget-header {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-toolbar {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 944 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 841 B |
After Width: | Height: | Size: 881 B |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1,013 B |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2 KiB |