I have a radgrid in a tabstrip radmultipage and when i click on the add new record the grid returns completely blank. This is a very urgent matter, so if someone could help me asap, it would be greatly appreciated. All of the grids in the tabstrip are reacting the same way.
aspx code:
.cs
aspx code:
| <%@ Page Language="C#" MasterPageFile="~/MasterPages/SiteMaster.master" Title="Manage Provider" AutoEventWireup="true" Inherits="Pgi.Hub.Administration.providerAddEdit" Codebehind="providerAddEdit.aspx.cs" %> |
| <%@ Register TagPrefix="radM" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> |
| <asp:Content id="Content1" ContentPlaceHolderID="javascript" runat="server"> |
| <script type="text/javascript"> |
| $(document).ready( |
| function() { |
| $("#<%=chkModeratorSameAsTitle.ClientID %>").click(chkModeratorSameAsTitle_click); |
| $("#<%=chkAttendeeSameAsTitle.ClientID %>").click(chkAttendeeSameAsTitle_click); |
| } |
| ); |
| function chkModeratorSameAsTitle_click() { |
| var txtModerator = $get('<%= txtDefaultModeratorEmailSubject.ClientID %>'); |
| if (eval($get('<%= chkModeratorSameAsTitle.ClientID %>')).checked) { |
| txtModerator.disabled = true; |
| } |
| else { |
| txtModerator.disabled = false; |
| } |
| } |
| function chkAttendeeSameAsTitle_click() { |
| var txtAttendee = $get('<%= txtDefaultAttendeeEmailSubject.ClientID %>'); |
| if (eval($get('<%= chkAttendeeSameAsTitle.ClientID %>')).checked) { |
| txtAttendee.disabled = true; |
| } |
| else { |
| txtAttendee.disabled = false; |
| } |
| } |
| function ValidateDefaultModeratorEmailSubject(source, args) { |
| var chkModerator = $get('<%= chkModeratorSameAsTitle.ClientID %>'); |
| args.IsValid = false; |
| if ((chkModerator.checked) || |
| ((!chkModerator.checked) && jQuery.trim(args.Value).length > 0)) { |
| args.IsValid = true; |
| } |
| } |
| function ValidateDefaultAttendeeEmailSubject(source, args) { |
| var chkAttendee = $get('<%= chkAttendeeSameAsTitle.ClientID %>'); |
| args.IsValid = false; |
| if ((chkAttendee.checked) || |
| ((!chkAttendee.checked) && jQuery.trim(args.Value).length > 0)) { |
| args.IsValid = true; |
| } |
| } |
| var hasChanges, inputs, dropdowns, editedRow; |
| function RowClick(sender, eventArgs) { |
| if (editedRow && hasChanges) { |
| hasChanges = false; |
| if (confirm("Update changes?")) { |
| $find("<%= radGridHelpLinks.MasterTableView.ClientID %>").updateItem(editedRow); |
| } |
| } |
| } |
| function RowDblClick(sender, eventArgs) { |
| editedRow = eventArgs.get_itemIndexHierarchical(); |
| $find("<%= radGridHelpLinks.MasterTableView.ClientID %>").editItem(editedRow); |
| } |
| function GridCommand(sender, args) { |
| if (args.get_commandName() != "Edit") { |
| editedRow = null; |
| } |
| } |
| function GridCreated(sender, eventArgs) { |
| var gridElement = sender.get_element(); |
| var elementsToUse = []; |
| inputs = gridElement.getElementsByTagName("input"); |
| for (var i = 0; i < inputs.length; i++) { |
| var lowerType = inputs[i].type.toLowerCase(); |
| if (lowerType == "hidden" || lowerType == "button") { |
| continue; |
| } |
| Array.add(elementsToUse, inputs[i]); |
| inputs[i].onchange = TrackChanges; |
| } |
| setTimeout(function() { if (elementsToUse[0]) elementsToUse[0].focus(); }, 100); |
| } |
| function TrackChanges(e) { |
| hasChanges = true; |
| } |
| </script> |
| </asp:Content> |
| <asp:Content ContentPlaceHolderID="mainContent" ID="pageContent" runat="server"> |
| <netspoke:pageHeading |
| ID="pageheading" |
| runat="server" |
| ShowRequiredText="true" /> |
| <netspoke:resultHandler runat="server" ID="resultHandler" /> |
| <asp:ValidationSummary |
| runat="server" |
| ID="validationSummary" |
| DisplayMode="BulletList" |
| ShowMessageBox="false" |
| ShowSummary="true" |
| CssClass="warningResponse" |
| HeaderText="Unable to save the provider. The following problems were encountered with your information:" |
| ValidationGroup="providerValidationGroup"/> |
| <radM:RadTabStrip ID="tabstripProviderOptions" runat="server" Orientation="HorizontalTop" |
| SelectedIndex="0" CausesValidation="true" ValidationGroup="providerValidationGroup" MultiPageID="MultiPageBranding" Align="Left" |
| AutoPostBack="true" Skin="Vista" OnTabClick="onTabClick"> |
| <Tabs> |
| <radM:RadTab Text="Add Provider" Value="1" runat="server" PageViewID="addProvider"> |
| </radM:RadTab> |
| <radM:RadTab Text="Linked Enterprises" Value="2" runat="server" PageViewID="linkedEnterprises"> |
| </radM:RadTab> |
| <radM:RadTab runat="server" Value="3" PageViewID="netspokeOptions"> |
| </radM:RadTab> |
| <radM:RadTab Text="Branding Options" Value="4" runat="server" SelectedIndex="0"> |
| <Tabs> |
| <radM:RadTab Text="Web Conf. Logo" Value="5" runat="server" PageViewID="webConfLogo"></radM:RadTab> |
| <radM:RadTab Text="Hub Logo" Value="6" runat="server" PageViewID="hubLogo"></radM:RadTab> |
| <radM:RadTab Text="Marketing Links" Value="7" runat="server" PageViewID="marketingLinks"></radM:RadTab> |
| <radM:RadTab Text="Marketing Images" Value="8" runat="server" PageViewID="marketingImages"></radM:RadTab> |
| <radM:RadTab Text="Application Title" Value="9" runat="server" PageViewID="appTitle"></radM:RadTab> |
| <radM:RadTab Text="Getting Started Text" Value="10" runat="server" PageViewID="gettingStartedText"></radM:RadTab> |
| <radM:RadTab Text="Help Links" Value="11" runat="server" PageViewID="helpLinks"></radM:RadTab> |
| <radM:RadTab Text="Quick Links" Value="12" runat="server" PageViewID="quickLinks"></radM:RadTab> |
| <radM:RadTab Text="Skin" Value="13" runat="server" PageViewID="skin"></radM:RadTab> |
| </Tabs> |
| </radM:RadTab> |
| </Tabs> |
| </radM:RadTabStrip> |
| <radM:RadMultiPage ID="MultiPageBranding" runat="server" SelectedIndex="0" CssClass="multiPage"> |
| <radM:RadPageView runat="server" ID="addProvider"> |
| <div class="yui-gd"> |
| <div class="yui-g first leftDiv"> |
| <asp:Localize ID="locProviderName" runat="server" Text="Provider Name:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locProviderType" runat="server" Text="Provider Type:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locHubGroupDomain" runat="server" Text="Hub Group Domain:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locDefaultMeetingServer" Text="Default Meeting Server:" runat="server" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locSecureDefaultMeetingServer" Text="Secure Default Meeting Server:" |
| runat="server" /> <span class="required">*</span> |
| <br /> |
| <asp:Localize ID="locAppShareHost" Text="App Share Host:" runat="server" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locCustomerHomePage" runat="server" Text="Customer Home Page:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locDefaultConferenceTitle" runat="server" Text="Default Conference Title:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locDefaultModeratorEmailSubject" runat="server" Text="Default Moderator Email Subject:" /> <span |
| class="required">*</span> |
| <br /> |
| <asp:Localize ID="locDefaultAttendeeEmailSubject" runat="server" Text="Default Attendee Email Subject:" /> <span |
| class="required">*</span> |
| </div> |
| <div class="yui-g rightDiv"> |
| <asp:TextBox runat="server" ID="txtProviderName" Width="214px" /> |
| <asp:RequiredFieldValidator ID="rvProviderName" runat="server" ControlToValidate="txtProviderName" |
| Display="Dynamic" ErrorMessage="Provider Name is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| |
| <asp:RegularExpressionValidator ID="revProviderName" runat="server" ErrorMessage="Only alphanumeric characters and spaces allowed." |
| ControlToValidate="txtProviderName" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="^[0-9a-zA-Z ]+$" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:DropDownList ID="ddlProviderType" runat="server" /> |
| <br /> |
| <asp:TextBox ID="txtHubGroupDomain" runat="server" onchange="SetText()" Width="214px" /> |
| <asp:RequiredFieldValidator ID="rvHubGrpDomain" runat="server" ControlToValidate="txtHubGroupDomain" |
| Display="Dynamic" ErrorMessage="Hub Group Domain is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| |
| <asp:RegularExpressionValidator ID="revHubGroupDomain" runat="server" ErrorMessage="Not a valid domain name." |
| ControlToValidate="txtHubGroupDomain" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:TextBox ID="txtDefualtMeetingServer" runat="server" Width="214px" /> |
| <input id="inpMeetingServerAppend" readonly="readonly" runat="server" type="text" /> |
| <asp:RequiredFieldValidator ID="rvDefMtngServer" runat="server" ControlToValidate="txtDefualtMeetingServer" |
| Display="Dynamic" ErrorMessage="Default Meeting Server is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| |
| <asp:RegularExpressionValidator ID="revdefMeetingServer" runat="server" ErrorMessage="Only numbers, letters, or dashes allowed." |
| ControlToValidate="txtDefualtMeetingServer" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="(^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$)" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:TextBox ID="txtSecureDefaultMeetingServer" runat="server" Width="214px" /> |
| <input id="inpSecureMeetingServerAppend" readonly="readonly" runat="server" type="text" /> |
| <asp:RequiredFieldValidator ID="rvSecDefMtngServer" runat="server" ControlToValidate="txtSecureDefaultMeetingServer" |
| Display="Dynamic" ErrorMessage="Secure Default Meeting Server is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| |
| <asp:RegularExpressionValidator ID="revSecDefMeetingServer" runat="server" ErrorMessage="Only numbers, letters, or dashes allowed." |
| ControlToValidate="txtSecureDefaultMeetingServer" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="(^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$)" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:TextBox ID="txtAppShareHost" runat="server" Width="214px" /> |
| <input id="inpAppShareHostAppend" readonly="readonly" runat="server" type="text" /> |
| <asp:RequiredFieldValidator ID="rvAppShareHost" runat="server" ControlToValidate="txtAppShareHost" |
| Display="Dynamic" ErrorMessage="App Share Host is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| <asp:RegularExpressionValidator ID="revAppShareHost" runat="server" ErrorMessage="Only numbers, letters, or dashes allowed." |
| ControlToValidate="txtAppShareHost" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="(^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$)" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:TextBox ID="txtCustomerHomePage" runat="server" Width="214px" /> |
| <asp:RequiredFieldValidator ID="rvCustomerHomePage" runat="server" ControlToValidate="txtCustomerHomePage" |
| Display="Dynamic" ErrorMessage="Customer Home Page is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| <asp:RegularExpressionValidator ID="revHomePage" runat="server" ErrorMessage="Not a valid url." |
| ControlToValidate="txtCustomerHomePage" Display="Dynamic" SetFocusOnError="True" |
| ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" ValidationGroup="providerValidationGroup"></asp:RegularExpressionValidator> |
| <br /> |
| <asp:TextBox ID="txtDefaultConferenceTitle" runat="server" Width="214px" /> |
| <asp:RequiredFieldValidator ID="rvDefaultConferenceTitle" runat="server" ControlToValidate="txtDefaultConferenceTitle" |
| Display="Dynamic" ErrorMessage="Default Conference Title is required" SetFocusOnError="True" ValidationGroup="providerValidationGroup"></asp:RequiredFieldValidator> |
| <br /> |
| <asp:TextBox ID="txtDefaultModeratorEmailSubject" runat="server" Width="214px" /> |
| <asp:CheckBox ID="chkModeratorSameAsTitle" runat="server" Text="Same as title" /> |
| <asp:CustomValidator ControlToValidate="txtDefaultModeratorEmailSubject" ID="valDefaultModeratorEmailSubject" |
| runat="server" ErrorMessage="Default Moderator Email Subject is required" ValidateEmptyText="true" |
| SetFocusOnError="true" Display="Dynamic" ValidationGroup="providerValidationGroup"/> |
| <br /> |
| <asp:TextBox ID="txtDefaultAttendeeEmailSubject" runat="server" Width="214px" /> |
| <asp:CheckBox ID="chkAttendeeSameAsTitle" runat="server" Text="Same as title" /> |
| <asp:CustomValidator ControlToValidate="txtDefaultAttendeeEmailSubject" ID="valDefaultAttendeeEmailSubject" |
| runat="server" ErrorMessage="Default Attendee Email Subject is required" ValidateEmptyText="true" |
| SetFocusOnError="true" Display="Dynamic" ValidationGroup="providerValidationGroup"/> |
| </div> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="linkedEnterprises"> |
| <div id="doc3"> |
| <asp:UpdateProgress ID="UpdateProgressEnterprises" runat="server" AssociatedUpdatePanelID="updatePanelEnterprises" |
| DisplayAfter="0"> |
| <ProgressTemplate> |
| <asp:Image ID="imgAjaxProgress" runat="server" ImageUrl="~/images/ajax-loader.gif" /> |
| </ProgressTemplate> |
| </asp:UpdateProgress> |
| <asp:UpdatePanel ID="updatePanelEnterprises" runat="server"> |
| <ContentTemplate> |
| <div style="width: 870px;"> |
| <table class="widetable"> |
| <tr> |
| <td> |
| <strong> |
| <asp:Localize ID="Localize3" runat="server" Text="Enterprise Name:" /></strong> |
| </td> |
| <td> |
| <asp:TextBox ID="txtEnterpriseName" runat="server" Width="214px" /> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <strong> |
| <asp:Localize ID="Localize6" runat="server" Text="Enterprise Type:" /></strong> |
| </td> |
| <td align="left"> |
| <asp:DropDownList ID="ddlEnterpriseType" runat="server"> |
| </asp:DropDownList> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| </td> |
| <td align="left"> |
| <asp:Button ID="btnSearchEnterprise" runat="server" CssClass="brandingButton" Text="Search" |
| OnClick="btnSearchEnterprise_Click" UseSubmitBehavior="False" CausesValidation="False" /> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| </td> |
| <td> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div style="width: 900px;"> |
| <table> |
| <tr> |
| <td align="center"> |
| <strong> |
| <asp:Localize ID="locAvaiableEnterprises" runat="server" Text="Search Results" /> |
| </strong> |
| </td> |
| <td align="center"> |
| </td> |
| <td align="center"> |
| <strong> |
| <asp:Localize ID="locSelectedEnterprises" runat="server" Text="Selected Enterprises" /> |
| </strong> |
| </td> |
| </tr> |
| <tr> |
| <td> |
| <asp:ListBox ID="lstSearchResults" runat="server" Rows="10" SelectionMode="Multiple" |
| Width="280px"></asp:ListBox> |
| </td> |
| <td align="center" valign="middle"> |
| <asp:Button ID="btnAddEnterprise" runat="server" CssClass="brandingButton" OnClick="btnAddEnterprise_Click" |
| Text="Add>>" UseSubmitBehavior="False" CausesValidation="False" /> |
| </td> |
| <td valign="middle"> |
| <asp:ListBox ID="lstSelectedEnterprises" runat="server" Rows="10" SelectionMode="Multiple" |
| Width="280px"></asp:ListBox> |
| </td> |
| </tr> |
| <tr> |
| <td align="center"> |
| <asp:Button ID="btnClearResults" runat="server" CausesValidation="False" CssClass="brandingButton" |
| OnClick="btnClearResults_Click" Text="Clear Search" UseSubmitBehavior="False" /> |
| </td> |
| <td> |
| </td> |
| <td align="center"> |
| <asp:Button ID="btnDeleteSelected" runat="server" CssClass="brandingButton" OnClick="btnDeleteSelected_Click" |
| Text="Delete Selected" UseSubmitBehavior="False" CausesValidation="False" /> |
| </td> |
| </tr> |
| </table> |
| </div> |
| </ContentTemplate> |
| <Triggers> |
| <asp:AsyncPostBackTrigger ControlID="btnSearchEnterprise" EventName="Click" /> |
| <asp:AsyncPostBackTrigger ControlID="btnAddEnterprise" EventName="Click" /> |
| <asp:AsyncPostBackTrigger ControlID="btnDeleteSelected" EventName="Click" /> |
| <asp:AsyncPostBackTrigger ControlID="btnClearResults" EventName="Click" /> |
| </Triggers> |
| </asp:UpdatePanel> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="netspokeOptions"> |
| <div class="yui-gb"> |
| <div class="yui-g first"> |
| <strong> |
| <asp:Localize ID="locScheduleOptions" runat="server" Text="Scheduling/Joining" /> |
| </strong><br /> |
| <asp:CheckBox ID="chkRequirePasscodeChecked" runat="server" Text="Conference private by default" /><br /> |
| <asp:CheckBox ID="chkJoinNoiseEnabled" runat="server" Text="Audio alert when someone joins" /><br /> |
| <asp:CheckBox ID="chkCallMyPhoneEnabled" runat="server" Text="Enable call my phone feature" /><br /> |
| <asp:CheckBox ID="chkPresentationsChecked" runat="server" Text="All uploaded presentations available" /><br /> |
| <asp:CheckBox ID="chkPollingChecked" runat="server" Text="All uploaded polling questions available" /><br /> |
| <asp:CheckBox ID="chkWebRecordingConfigEnabled" runat="server" Text="Web recording is modifiable in scheduling" /><br /> |
| <asp:CheckBox ID="chkRecordAllWeb" runat="server" Text="Record all web conference events" /><br /> |
| </div> |
| <div class="yui-g"> |
| <strong> |
| <asp:Localize ID="locConferenceOptions" runat="server" Text="In Conference" /> |
| </strong><br /> |
| <asp:CheckBox ID="chkQAEnabled" runat="server" Text="Enable Q&A" /><br /> |
| <asp:CheckBox ID="chkWebRecordingEnabled" runat="server" Text="Enable web recording option" /><br /> |
| <asp:CheckBox ID="chkChatEnabled" runat="server" Text="Enable chat" /><br /> |
| <asp:CheckBox ID="chkBlockSharingEntireDesktop" runat="server" Text="Enable desktop sharing" /><br /> |
| <asp:CheckBox ID="chkAppShareEnabled" runat="server" Text="Enable AppShare" /><br /> |
| <asp:CheckBox ID="chkSharingVideoEnabled" runat="server" Text="Enable video" /><br /> |
| <asp:CheckBox ID="chkSharedFilesEnabled" runat="server" Text="Enable file transfer" /><br /> |
| <asp:CheckBox ID="chkPollingEnabled" runat="server" Text="Enable polling" /><br /> |
| <asp:CheckBox ID="chkWhiteboardEnabled" runat="server" Text="Enable whiteboard" /><br /> |
| <asp:CheckBox ID="chkPresentationsEnabled" runat="server" Text="Enable PowerPoint sharing" /><br /> |
| <asp:CheckBox ID="chkHelpEnabled" runat="server" Text="Enable live help" /><br /> |
| </div> |
| <div class="yui-g"> |
| <strong> |
| <asp:Localize ID="locAppShareOptions" runat="server" Text="AppShare/Communication" /> |
| </strong><br /> |
| <asp:CheckBox ID="chkAppShareMaskingEnabled" runat="server" Text="Hide pop-up windows when sharing" /><br /> |
| <asp:CheckBox ID="chkGrantControlEnabled" runat="server" Text="Grant control to participants enabled" /><br /> |
| <asp:CheckBox ID="chkSecure" runat="server" Text="SSL enabled for all conferences by default" /><br /> |
| <asp:Label ID="lblAppShareColorDepth" runat="server" Text="Set default AppShare color level" /> |
| <asp:DropDownList ID="ddlAppShareColorDepth" runat="server"> |
| <asp:ListItem Text="Low" Value="8" /> |
| <asp:ListItem Text="High" Value="16" /> |
| </asp:DropDownList> |
| <br /> |
| </div> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="webConfLogo"> |
| <div class="yui-gd"> |
| <div class="yui-g first"> |
| <strong> |
| <asp:Localize ID="locWebLogoCurrent" runat="Server" Text="Web Conference Logo:" /> |
| </strong> |
| <br /> |
| <br /> |
| <asp:Localize ID="locSelectWebLogo" runat="server" Text="Select Conference Logo for upload:" /><br /> |
| <radM:RadUpload ID="RadUploadWebConfLogo" runat="server" InitialFileInputsCount="1" |
| ControlObjectsVisibility="None" MaxFileSize="262144000" MaxFileInputsCount="1" |
| OnValidatingFile="RadUpload_ValidatingFile" Width="100%" EnableFileInputSkinning="false" /> |
| <p> |
| <asp:Localize ID="locWebLogoRequirements" runat="Server" Text="<i><strong>Logo Requirements:</strong><br>• The file must be in <strong>.jpg or .gif</strong> format<br>• The image must not exceed <strong>150W x 38H</strong> px<br>• The file size must not exceed <strong>128</strong> kb</i>." /> |
| <asp:HiddenField ID="hfWebConfLogo" runat="server" /> |
| </p> |
| <br /> |
| <asp:Button ID="btnWebConfLogoPreview" runat="server" Text="Preview" OnClick="btnWebConfLogoPreview_Click" />   |
| <asp:Button ID="btnWebConfLogoSave" runat="server" Text="Save" OnClick="btnWebLogoSave_Click" Visible="false" /> |
| </div> |
| <div class="yui-g"> |
| <asp:Image ID="imgConfLogo" AlternateText="Image Preview" runat="server" /> |
| </div> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="hubLogo"> |
| <div class="yui-gd"> |
| <div class="yui-g first"> |
| <strong> |
| <asp:Localize ID="locHubLogoCurrent" runat="Server" Text="Conferencing Hub Logo:" /> |
| </strong> |
| <br /> |
| <asp:Localize ID="locSelectHubLogo" runat="Server" Text="Select Conferencing Hub Logo for upload:" /><br /> |
| <radM:RadUpload ID="RadUploadHeaderLogo" runat="server" InitialFileInputsCount="1" |
| ControlObjectsVisibility="None" MaxFileSize="262144000" MaxFileInputsCount="1" |
| OnValidatingFile="RadUpload_ValidatingFile" Width="100%" EnableFileInputSkinning="false" /> |
| <p> |
| <asp:Localize ID="locHubLogoRequirements" runat="Server" Text="<i><strong>Logo Requirements:</strong><br>• The file must be in <strong>.jpg or .gif</strong> format<br>• The image must not exceed <strong>150W x 60H</strong> px<br>• The file size must not exceed <strong>128</strong> kb</i>." /> |
| </p> |
| <br /> |
| <asp:Button ID="btnHeaderLogoPreview" runat="server" Text="Preview" OnClick="btnHeaderLogoPreview_Click" |
| UseSubmitBehavior="False" />   |
| <asp:Button ID="btnHeaderLogoSave" runat="server" Text="Save" OnClick="btnHubLogoSave_Click" Visible="false"/> |
| </div> |
| <div class="yui-g"> |
| <asp:Image ID="imgHeaderLogo" runat="server" /> |
| <asp:HiddenField ID="hfHeaderLogo" runat="server" /> |
| </div> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="marketingLinks"> |
| <radM:RadGrid ID="radGridMarkeingLinks" runat="server" PageSize="5" AutoGenerateColumns="false" |
| AllowAutomaticDeletes="true" AllowAutomaticInserts="true" AllowAutomaticUpdates="true" |
| OnItemInserted="InsertBranding" OnItemDeleted="DeleteBranding" OnItemUpdated="UpdateBranding" AllowPaging="false" Width="600px"> |
| <MasterTableView TableLayout="Fixed" CommandItemDisplay="Top" EnableNoRecordsTemplate="true"> |
| <Columns> |
| <radM:GridEditCommandColumn></radM:GridEditCommandColumn> |
| <radM:GridBoundColumn UniqueName="MarketingText" HeaderText="Marketing Link Text" DataField="Key" ></radM:GridBoundColumn> |
| <radM:GridBoundColumn UniqueName="MarketingLink" HeaderText="Marketing Link URL" DataField="Value" ></radM:GridBoundColumn> |
| <radM:GridButtonColumn ButtonType="LinkButton" Text="Delete"></radM:GridButtonColumn> |
| </Columns> |
| <NoRecordsTemplate> |
| <h2>There are currently no marketing links defined</h2> |
| </NoRecordsTemplate> |
| </MasterTableView> |
| <%--<ClientSettings> |
| <ClientEvents OnRowClick="RowClick" OnRowDblClick="RowDblClick" |
| OnGridCreated="GridCreated" OnCommand="GridCommand"/> |
| </ClientSettings>--%> |
| </radM:RadGrid> |
| <%--<radM:GridTextBoxColumnEditor ID="MarketingKey" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor> |
| <radM:GridTextBoxColumnEditor ID="MarketingValue" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor>--%> |
| <netspoke:actionButtons ID="abMarketingLinks" runat="server" DisplaySaveButton="true" SaveText="Save" DisplayCancelButton="false" /> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="marketingImages"> |
| <div> |
| <radM:RadGrid ID="radGridMarketingImages" runat="server" PageSize="5" AutoGenerateColumns="False" |
| AllowPaging="false" Width="600px"> |
| <MasterTableView TableLayout="Fixed" CommandItemDisplay="Top"> |
| <Columns> |
| <radM:GridEditCommandColumn></radM:GridEditCommandColumn> |
| <radM:GridTemplateColumn HeaderText="Image Path" UniqueName="ImagePath" SortExpression="value"> |
| <ItemTemplate> |
| <asp:Label runat="server" ID="lblName" text='<%# Eval("Value") %>'></asp:Label> |
| </ItemTemplate> |
| <EditItemTemplate> |
| <asp:TextBox runat="server" ID="txbName" text='<%# Eval("Value") %>'></asp:TextBox> |
| </EditItemTemplate> |
| </radM:GridTemplateColumn> |
| <radM:GridTemplateColumn HeaderText="Image" UniqueName="Upload"> |
| <ItemTemplate> |
| <asp:Image runat="server" ID="ImageThumbnail" ImageUrl='<%# Eval("Value") %>' /> |
| </ItemTemplate> |
| <EditItemTemplate> |
| <radM:RadUpload ID="RadUploadMarkeingImage" runat="server" InitialFileInputsCount="1" |
| ControlObjectsVisibility="None" MaxFileSize="262144000" MaxFileInputsCount="1" |
| OnValidatingFile="RadUpload_ValidatingFile" Width="100%" EnableFileInputSkinning="false"> |
| </radM:RadUpload> |
| </EditItemTemplate> |
| </radM:GridTemplateColumn> |
| <radM:GridButtonColumn ButtonType="PushButton" Text="Delete" CommandName="delete" UniqueName="column"> |
| </radM:GridButtonColumn> |
| </Columns> |
| <EditFormSettings> |
| <EditColumn UniqueName="EditCommandColumn1"> |
| </EditColumn> |
| </EditFormSettings> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px" /> |
| </ExpandCollapseColumn> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px" /> |
| </RowIndicatorColumn> |
| </MasterTableView> |
| <FilterMenu EnableTheming="True"> |
| <CollapseAnimation Duration="200" Type="OutQuint" /> |
| </FilterMenu> |
| </radM:RadGrid> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="appTitle"> |
| <div class="yui-gd"> |
| <div class="yui-g first"> |
| <br /> |
| <strong> |
| <asp:Localize ID="locAppTitle" runat="server" Text="Application Title Text:"></asp:Localize> |
| </strong> |
| <br /> |
| <br /> |
| <asp:Localize ID="locAppText" runat="server" Text="Application Text"></asp:Localize> |
| </div> |
| <div class="yui-g"> |
| <br /> |
| <br /> |
| <asp:TextBox ID="txtAppText" runat="server"></asp:TextBox> |
| </div> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="gettingStartedText"> |
| <radM:RadGrid ID="radGridGettingStarted" runat="server" PageSize="5" AutoGenerateColumns="false" |
| AllowPaging="false" Width="600px"> |
| <MasterTableView TableLayout="Fixed" CommandItemDisplay="Top" EditMode="InPlace" EnableNoRecordsTemplate="true"> |
| <Columns> |
| <radM:GridBoundColumn UniqueName="GettingStartedText" HeaderText="Getting Started Text" DataField="Key" ColumnEditorID="GettingStartedKey"></radM:GridBoundColumn> |
| <radM:GridBoundColumn UniqueName="GettingStartedLink" HeaderText="Getting Started Link" DataField="Value" ColumnEditorID="GettingStartedValue"></radM:GridBoundColumn> |
| <radM:GridButtonColumn ButtonType="PushButton" Text="Delete"></radM:GridButtonColumn> |
| </Columns> |
| <NoRecordsTemplate> |
| <h2>There are currently no Getting Started links defined</h2> |
| </NoRecordsTemplate> |
| </MasterTableView> |
| <ClientSettings> |
| <ClientEvents OnRowClick="RowClick" OnRowDblClick="RowDblClick" |
| OnGridCreated="GridCreated" OnCommand="GridCommand"/> |
| </ClientSettings> |
| </radM:RadGrid> |
| <radM:GridTextBoxColumnEditor ID="GettingStartedKey" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor> |
| <radM:GridTextBoxColumnEditor ID="GettingStartedValue" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor> |
| <netspoke:actionButtons ID="abGettingStarted" runat="server" DisplaySaveButton="true" SaveText="Save" DisplayCancelButton="false" /> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="helpLinks"> |
| <div> |
| <radM:RadGrid ID="radGridHelpLinks" runat="server" PageSize="5" AutoGenerateColumns="false" |
| AllowPaging="false" Width="600px"> |
| <MasterTableView TableLayout="Fixed" CommandItemDisplay="Top" EditMode="InPlace" EnableNoRecordsTemplate="true"> |
| <Columns> |
| <radM:GridBoundColumn UniqueName="HelpText" HeaderText="Help Item Text" DataField="Key" ColumnEditorID="HelpKey"></radM:GridBoundColumn> |
| <radM:GridBoundColumn UniqueName="HelpLink" HeaderText="Help Item URL" DataField="Value" ColumnEditorID="HelpValue"></radM:GridBoundColumn> |
| <radM:GridButtonColumn ButtonType="PushButton" Text="Delete"></radM:GridButtonColumn> |
| </Columns> |
| <NoRecordsTemplate> |
| <h2>There are currently no help links defined</h2> |
| </NoRecordsTemplate> |
| </MasterTableView> |
| <ClientSettings> |
| <ClientEvents OnRowClick="RowClick" OnRowDblClick="RowDblClick" |
| OnGridCreated="GridCreated" OnCommand="GridCommand"/> |
| </ClientSettings> |
| </radM:RadGrid> |
| <radM:GridTextBoxColumnEditor ID="HelpKey" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor> |
| <radM:GridTextBoxColumnEditor ID="HelpValue" runat="server" TextBoxStyle-Width="200px"></radM:GridTextBoxColumnEditor> |
| <netspoke:actionButtons ID="abHelpLinks" runat="server" DisplaySaveButton="true" SaveText="Save" DisplayCancelButton="false" /> |
| </div> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="quickLinks"> |
| </radM:RadPageView> |
| <radM:RadPageView runat="server" ID="skin"> |
| <asp:Localize ID="locSkin" runat="server" Text="Skin:" /><span class="required">*</span> |
| <asp:DropDownList ID="ddlSkin" runat="server" /> |
| </radM:RadPageView> |
| </radM:RadMultiPage> |
| <asp:HiddenField id="hfBrandingId" runat="server" /> |
| <asp:HiddenField id="hfProviderID" runat="server" /> |
| <br /> |
| <div id="divAction" runat="server"> |
| <netspoke:actionButtons runat="server" ID="actionBtns" OnSaveClick="Save" CancelURL="~/Administration/providerSearch.aspx" /> |
| </div> |
| <br /> |
| </asp:Content> |
.cs
| using System; |
| using System.Data; |
| using System.Net; |
| using System.Text; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using Pgi.DomainLayer; |
| using Pgi.Logging; |
| using Pgi.ServiceAgents; |
| using Pgi.Hub.ServiceLayer; |
| using System.IO; |
| using System.Web; |
| using Telerik.Web.UI.Upload; |
| using Telerik.Web.UI; |
| using System.Drawing.Imaging; |
| using System.Web.Configuration; |
| using System.Collections.Generic; |
| using Pgi.ServiceAgents.PgiInternalWS; |
| using Provider=Pgi.DomainLayer.Provider; |
| using System.Globalization; |
| using ProviderType=Pgi.DomainLayer.ProviderType; |
| namespace Pgi.Hub.Administration |
| { |
| public partial class providerAddEdit : HubBasePage |
| { |
| #region Private Variables |
| private const int _MAX_FILE_SIZE = 128000; |
| private const string _SAME_AS_TITLE = "SAME AS TITLE"; |
| private Provider _provider = new Provider(); |
| private ServiceLocator _serviceLocator = new ServiceLocator(); |
| private const string applicationName = "Hub"; |
| private const string defaultLanguage = "en"; |
| private int brandId; |
| private int providerId; |
| private bool edit; |
| #endregion |
| #region Load Methods |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (!Page.User.IsInRole("GlobalAdmin")) |
| { |
| throw new Exception("You do not have access to this page."); |
| } |
| if (!Page.IsPostBack) |
| { |
| //Skin Options |
| ddlSkin.Items.Add(new ListItem("Default", "default")); |
| ddlSkin.Items.Add(new ListItem("Blue", "blue")); |
| ddlSkin.Items.Add(new ListItem("Brown", "brown")); |
| ddlSkin.Items.Add(new ListItem("Gray", "gray")); |
| ddlSkin.Items.Add(new ListItem("Green", "green")); |
| ddlSkin.Items.Add(new ListItem("Khaki", "khaki")); |
| ddlSkin.Items.Add(new ListItem("Navy", "navy")); |
| ddlSkin.Items.Add(new ListItem("Orange", "orange")); |
| ddlSkin.Items.Add(new ListItem("Purple", "purple")); |
| ddlSkin.Items.Add(new ListItem("Red", "red")); |
| ddlSkin.Items.Add(new ListItem("Yellow", "yellow")); |
| //provider types |
| ddlProviderType.Items.Add(new ListItem(_provider.GetStringFromProviderType(ProviderType.External), DomainLayer.ProviderType.External.ToString())); |
| ddlProviderType.Items.Add(new ListItem(_provider.GetStringFromProviderType(ProviderType.Test), DomainLayer.ProviderType.Test.ToString())); |
| ddlProviderType.Items.Add(new ListItem(_provider.GetStringFromProviderType(ProviderType.Internal), DomainLayer.ProviderType.Internal.ToString())); |
| //enterprise Types |
| ddlEnterpriseType.Items.Add(new ListItem("", "")); |
| ddlEnterpriseType.Items.Add(new ListItem("Premiere Client", "Premiere Client")); |
| ddlEnterpriseType.Items.Add(new ListItem("Reseller", "Reseller")); |
| ddlEnterpriseType.Items.Add(new ListItem("Wholesaler", "Wholesaler")); |
| valDefaultModeratorEmailSubject.ClientValidationFunction = "ValidateDefaultModeratorEmailSubject"; |
| valDefaultAttendeeEmailSubject.ClientValidationFunction = "ValidateDefaultAttendeeEmailSubject"; |
| imgConfLogo.Visible = false; |
| imgHeaderLogo.Visible = false; |
| //to add domain name automatically from Hub Group Domain textbox |
| SetText(); |
| hfBrandingId.Value = CurrentHub.Id.ToString(); |
| //set netspoke options tab text |
| RadTab radTab = tabstripProviderOptions.Tabs.FindTabByValue("3"); |
| radTab.Text = string.Format("{0} Options", BrandingLocalization.GetProductName(ProductTypes.NetspokeService, CurrentHub.BrandId)); |
| actionBtns.Visible = false; |
| edit = false; |
| //Edit(provider ID is provided) |
| if (Request["ID"] != null) |
| { |
| edit = true; |
| actionBtns.Visible = true; |
| try |
| { |
| hfProviderID.Value = Request["ID"]; |
| } |
| catch (Exception exc) |
| { |
| LogManager.Log.Error("Error converting providerID on provider add/edit"); |
| LogManager.Log.Exception(exc); |
| Response.Redirect("providerSearch.aspx"); |
| } |
| LoadProvider(); |
| ddlProviderType.Enabled = false; |
| } |
| } |
| } |
| private void LoadProvider() |
| { |
| IEnumerable<string> mycol = new List<string>(); |
| _provider = _serviceLocator.ProviderService().Load(Convert.ToInt32(hfProviderID.Value)); |
| brandId = _serviceLocator.BrandingService().GetBrandId(null, _provider.Name); |
| txtProviderName.Text = _provider.Name; |
| txtHubGroupDomain.Text = _provider.HubGroupDomain; |
| txtAppShareHost.Text = _provider.AppShareHost.Replace("." + _provider.HubGroupDomain.Trim(), ""); |
| txtCustomerHomePage.Text = _provider.CustomerUrl; |
| txtDefualtMeetingServer.Text = _provider.DefaultMeetingServer.Replace("." + _provider.HubGroupDomain.Trim(), ""); |
| txtSecureDefaultMeetingServer.Text = _provider.DefaultMeetingServerSSL.Replace("." + _provider.HubGroupDomain.Trim(), ""); |
| inpAppShareHostAppend.Value = txtHubGroupDomain.Text; |
| inpMeetingServerAppend.Value = txtHubGroupDomain.Text; |
| inpSecureMeetingServerAppend.Value = txtHubGroupDomain.Text; |
| //ddlSkin.SelectedValue = _provider.Skin; |
| ddlProviderType.SelectedValue = _provider.ProviderType.ToString(); |
| if (_provider.HeaderLogo.Length > 0) |
| { |
| imgHeaderLogo.Visible = true; |
| imgHeaderLogo.ImageUrl = "~/utilities/imageStreamer.aspx?imagePath=" + HttpUtility.UrlEncode(_provider.HeaderLogo); |
| } |
| if (_provider.ConsoleLogo.Length > 0) |
| { |
| imgConfLogo.Visible = true; |
| imgConfLogo.ImageUrl = "~/utilities/imageStreamer.aspx?imagePath=" + HttpUtility.UrlEncode(_provider.ConsoleLogo); |
| } |
| foreach (var enterprise in _provider.Enterprises) |
| { |
| lstSelectedEnterprises.Items.Add(enterprise.Trim()); |
| } |
| txtDefaultConferenceTitle.Text = _provider.TextOptions["DefaultConferenceTitle"]; |
| if (_provider.TextOptions["DefaultSubjectModerator"].ToUpper() == _SAME_AS_TITLE) |
| { |
| chkModeratorSameAsTitle.Checked = true; |
| txtDefaultModeratorEmailSubject.Enabled = false; |
| } |
| else |
| { |
| txtDefaultModeratorEmailSubject.Text = _provider.TextOptions["DefaultSubjectModerator"]; |
| } |
| if (_provider.TextOptions["DefaultSubjectAttendee"].ToUpper() == _SAME_AS_TITLE) |
| { |
| chkAttendeeSameAsTitle.Checked = true; |
| txtDefaultAttendeeEmailSubject.Enabled = false; |
| } |
| else |
| { |
| txtDefaultAttendeeEmailSubject.Text = _provider.TextOptions["DefaultSubjectAttendee"]; |
| } |
| LoadBrandingInfo(); |
| LoadOptions(_provider); |
| } |
| private void SetText() |
| { |
| var sb = new StringBuilder(); |
| sb.Append("<script type='text/javascript'>\r\n"); |
| sb.Append("function SetText()\r\n"); |
| sb.Append(" {\r\n"); |
| sb.Append(" var domain = document.getElementById('" + txtHubGroupDomain.ClientID + "');\r\n"); |
| sb.Append(" var txt1 = document.getElementById('" + inpAppShareHostAppend.ClientID + "');\r\n"); |
| sb.Append(" var txt2 = document.getElementById('" + inpMeetingServerAppend.ClientID + "');\r\n"); |
| sb.Append(" var txt3 = document.getElementById('" + inpSecureMeetingServerAppend.ClientID + "');\r\n"); |
| sb.Append(" if (domain != null)\r\n"); |
| sb.Append(" {\r\n"); |
| sb.Append(" txt1.value = domain.value;\r\n"); |
| sb.Append(" txt2.value = domain.value;\r\n"); |
| sb.Append(" txt3.value = domain.value;\r\n"); |
| sb.Append(" }\r\n"); |
| sb.Append(" }\r\n"); |
| sb.Append("</script>\r\n"); |
| var cs = Page.ClientScript; |
| var csName = "setTextScript"; |
| Type csType = GetType(); |
| if (!cs.IsClientScriptBlockRegistered(csType, csName)) |
| { |
| cs.RegisterClientScriptBlock(csType, csName, sb.ToString()); |
| } |
| } |
| private void LoadBrandingInfo() |
| { |
| //initial load of helplinks grid |
| BrandedItem[] brandingData = null; |
| brandingData = _serviceLocator.BrandingService().GetBrandingData(applicationName, brandId); |
| var keyValMarketingLinks = _serviceLocator.BrandingService().GetKeyValPair(brandingData, "DisplaySettings", |
| "Content", "MarketingLinks"); |
| radGridMarkeingLinks.DataSource = keyValMarketingLinks; |
| radGridMarkeingLinks.DataBind(); |
| var keyValHelpLinks = _serviceLocator.BrandingService().GetKeyValPair(brandingData, "DisplaySettings", |
| "Content", |
| "HelpLinks"); |
| radGridHelpLinks.DataSource = keyValHelpLinks; |
| radGridHelpLinks.DataBind(); |
| var keyValGettingStarted = _serviceLocator.BrandingService().GetKeyValPair(brandingData, "DisplaySettings", |
| "Content", "GettingStarted"); |
| radGridGettingStarted.DataSource = keyValGettingStarted; |
| radGridGettingStarted.DataBind(); |
| var keyValMarketingAds = _serviceLocator.BrandingService().GetKeyValPair(brandingData, "DisplaySettings", |
| "Content", "PormotionLinks"); |
| radGridMarketingImages.DataSource = keyValMarketingAds; |
| radGridMarketingImages.DataBind(); |
| } |
| private void LoadOptions(Pgi.DomainLayer.Provider provider) |
| { |
| if (provider.Options != null && provider.Options.Count > 0) |
| { |
| foreach (var option in provider.Options) |
| { |
| switch (option.Key) |
| { |
| //column 1 |
| case "RequirePasscodeChecked": |
| chkRequirePasscodeChecked.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "JoinNoiseEnabled": |
| chkJoinNoiseEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "CallMyPhoneEnabled": |
| chkCallMyPhoneEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "PresentationsChecked": |
| chkPresentationsChecked.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "PollingChecked": |
| chkPollingChecked.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "WebRecordingConfigEnabled": |
| chkWebRecordingConfigEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "RecordAllWeb": |
| chkRecordAllWeb.Checked = Convert.ToBoolean(option.Value); |
| break; |
| // column 2 |
| case "QAEnabled": |
| chkQAEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "WebRecordingEnabled": |
| chkWebRecordingEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "ChatEnabled": |
| chkChatEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "HelpEnabled": |
| chkHelpEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "BlockSharingEntireDesktop": |
| chkBlockSharingEntireDesktop.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "AppShareEnabled": |
| chkAppShareEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "SharingVideoEnabled": |
| chkSharingVideoEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "SharedFilesEnabled": |
| chkSharedFilesEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "PollingEnabled": |
| chkPollingEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "WhiteboardEnabled": |
| chkWhiteboardEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "PresentationsEnabled": |
| chkPresentationsEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| // column 3 |
| case "AppShareMaskingEnabled": |
| chkAppShareMaskingEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "GrantControlEnabled": |
| chkGrantControlEnabled.Checked = Convert.ToBoolean(option.Value); |
| break; |
| case "AppShareColorDepth": |
| ddlAppShareColorDepth.SelectedIndex = Common.GetSelectedIndex(ddlAppShareColorDepth, option.Value.ToString()); |
| break; |
| case "Secure": |
| chkSecure.Checked = Convert.ToBoolean(option.Value); |
| break; |
| } |
| } |
| bool hideLiveHelp; |
| bool.TryParse(BrandingLocalization.GetValue("DisplaySettings", "Content", "HideLiveHelp", CurrentHub.BrandId), |
| out hideLiveHelp); |
| if (hideLiveHelp) |
| { |
| chkHelpEnabled.Enabled = false; |
| chkHelpEnabled.Visible = false; |
| } |
| } |
| } |
| #endregion |
| #region Save Methods |
| protected void Save(object sender, EventArgs e) |
| { |
| if (Page.IsValid) |
| { |
| resultHandler.ResetStatus(); |
| try |
| { |
| if (SaveData() && edit == false) |
| { |
| //Response.Redirect("providerSearch.aspx", true); |
| RadTab tab = tabstripProviderOptions.FindTabByValue("4"); |
| tab.Selected = true; |
| RadPageView pageView = MultiPageBranding.FindPageViewByID("webConfLogo"); |
| pageView.Selected = true; |
| actionBtns.Visible = true; |
| } |
| else |
| { |
| resultHandler.ChangeStatus(ActionStatus.Warning, "Unable to save your changes."); |
| } |
| } |
| catch (Exception wsEx) |
| { |
| imgConfLogo.Visible = false; |
| imgHeaderLogo.Visible = false; |
| resultHandler.ResetStatus(); |
| resultHandler.ChangeStatus(ActionStatus.Error, String.Format("The following error occurred while saving your changes: {0}", wsEx.Message)); |
| LogManager.Log.Exception(wsEx); |
| } |
| } |
| } |
| private bool SaveData() |
| { |
| var defaultSubjectModerator = ""; |
| var defaultSubjectAttendee = ""; |
| if (chkModeratorSameAsTitle.Checked) |
| { |
| defaultSubjectModerator = _SAME_AS_TITLE; |
| } |
| else |
| { |
| defaultSubjectModerator = txtDefaultModeratorEmailSubject.Text; |
| } |
| if (chkAttendeeSameAsTitle.Checked) |
| { |
| defaultSubjectAttendee = _SAME_AS_TITLE; |
| } |
| else |
| { |
| defaultSubjectAttendee = txtDefaultModeratorEmailSubject.Text; |
| } |
| if (hfProviderID.Value != "") |
| { |
| _provider = _serviceLocator.ProviderService().Load(int.Parse(hfProviderID.Value)); |
| _provider.TextOptions["DefaultConferenceTitle"] = txtDefaultConferenceTitle.Text; |
| _provider.TextOptions["DefaultSubjectModerator"] = defaultSubjectModerator; |
| _provider.TextOptions["DefaultSubjectAttendee"] = defaultSubjectAttendee; |
| } |
| else |
| { |
| _provider = new Provider(); |
| _provider.TextOptions.Add("ProviderName", txtProviderName.Text.Trim()); |
| _provider.TextOptions.Add("DefaultConferenceTitle", txtDefaultConferenceTitle.Text); |
| _provider.TextOptions.Add("DefaultSubjectModerator", defaultSubjectModerator); |
| _provider.TextOptions.Add("DefaultSubjectAttendee", defaultSubjectAttendee); |
| } |
| //_provider.Skin = ddlSkin.SelectedValue.Trim(); |
| _provider.ProviderType = _provider.GetProviderTypeFromString(ddlProviderType.SelectedItem.Text); |
| _provider.Name = txtProviderName.Text.Trim(); |
| _provider.HubGroupDomain = txtHubGroupDomain.Text.Trim(); |
| _provider.AppShareHost = txtAppShareHost.Text.Trim() + "." + txtHubGroupDomain.Text.Trim(); |
| _provider.CustomerUrl = txtCustomerHomePage.Text.Trim(); |
| _provider.DefaultMeetingServer = txtDefualtMeetingServer.Text.Trim() + "." + txtHubGroupDomain.Text.Trim(); |
| _provider.DefaultMeetingServerSSL = txtSecureDefaultMeetingServer.Text.Trim() + "." + txtHubGroupDomain.Text.Trim(); |
| _provider.Enterprises.Clear(); |
| foreach (ListItem enterprise in lstSelectedEnterprises.Items) |
| { |
| _provider.Enterprises.Add(enterprise.Text.Trim()); |
| } |
| SaveOptions(_provider); |
| //SaveHeaderImageToServer(_provider); |
| //SaveWebConfImageToServer(_provider); |
| providerId = _serviceLocator.ProviderService().Save(_provider); |
| hfProviderID.Value = providerId.ToString(); |
| brandId = _serviceLocator.BrandingService().GetBrandId(providerId, _provider.Name); |
| RadTab tab = tabstripProviderOptions.FindTabByValue("4"); |
| tab.Selected = true; |
| RadPageView pageView = MultiPageBranding.FindPageViewByID("webConfLogo"); |
| pageView.Selected = true; |
| return true; |
| } |
| private void SaveOptions(Provider provider) |
| { |
| provider.Options.Clear(); |
| //column 1 |
| provider.Options.Add("RequirePasscodeChecked", Convert.ToInt16(chkRequirePasscodeChecked.Checked)); |
| provider.Options.Add("JoinNoiseEnabled", Convert.ToInt16(chkJoinNoiseEnabled.Checked)); |
| provider.Options.Add("CallMyPhoneEnabled", Convert.ToInt16(chkCallMyPhoneEnabled.Checked)); |
| provider.Options.Add("PresentationsChecked", Convert.ToInt16(chkPresentationsChecked.Checked)); |
| provider.Options.Add("PollingChecked", Convert.ToInt16(chkPollingChecked.Checked)); |
| provider.Options.Add("WebRecordingConfigEnabled", Convert.ToInt16(chkWebRecordingConfigEnabled.Checked)); |
| provider.Options.Add("RecordAllWeb", Convert.ToInt16(chkRecordAllWeb.Checked)); |
| //column 2 |
| provider.Options.Add("QAEnabled", Convert.ToInt16(chkQAEnabled.Checked)); |
| provider.Options.Add("WebRecordingEnabled", Convert.ToInt16(chkWebRecordingEnabled.Checked)); |
| provider.Options.Add("ChatEnabled", Convert.ToInt16(chkChatEnabled.Checked)); |
| provider.Options.Add("HelpEnabled", Convert.ToInt16(chkHelpEnabled.Checked)); |
| provider.Options.Add("BlockSharingEntireDesktop", Convert.ToInt16(chkBlockSharingEntireDesktop.Checked)); |
| provider.Options.Add("AppShareEnabled", Convert.ToInt16(chkAppShareEnabled.Checked)); |
| provider.Options.Add("SharingVideoEnabled", Convert.ToInt16(chkSharingVideoEnabled.Checked)); |
| provider.Options.Add("SharedFilesEnabled", Convert.ToInt16(chkSharedFilesEnabled.Checked)); |
| provider.Options.Add("PollingEnabled", Convert.ToInt16(chkPollingEnabled.Checked)); |
| provider.Options.Add("WhiteboardEnabled", Convert.ToInt16(chkWhiteboardEnabled.Checked)); |
| provider.Options.Add("PresentationsEnabled", Convert.ToInt16(chkPresentationsEnabled.Checked)); |
| //column 3 |
| provider.Options.Add("AppShareMaskingEnabled", Convert.ToInt16(chkAppShareMaskingEnabled.Checked)); |
| provider.Options.Add("GrantControlEnabled", Convert.ToInt16(chkGrantControlEnabled.Checked)); |
| provider.Options.Add("AppShareColorDepth", Convert.ToInt32(ddlAppShareColorDepth.SelectedValue)); |
| provider.Options.Add("Secure", Convert.ToInt16(chkSecure.Checked)); |
| } |
| private void SaveHeaderImageToServer(Provider provider) |
| { |
| if (Page.IsValid) |
| { |
| SaveLocalImage(RadUploadHeaderLogo, 150, 60, hfHeaderLogo); |
| if (RadUploadHeaderLogo.InvalidFiles.Count == 0 && hfHeaderLogo.Value.Length > 0) |
| { |
| if (SaveImage("headerLogo", Server.UrlDecode(hfHeaderLogo.Value), provider)) |
| { |
| imgHeaderLogo.Visible = true; |
| imgHeaderLogo.ImageUrl = "~/utilities/imageStreamer.aspx?imageType=headerLogo&hubId=" + hfBrandingId.Value; |
| hfHeaderLogo.Value = ""; |
| } |
| else |
| { |
| imgHeaderLogo.Visible = false; |
| resultHandler.ChangeStatus(ActionStatus.Warning, "Unable to update information"); |
| } |
| } |
| else |
| { |
| imgHeaderLogo.Visible = false; |
| imgHeaderLogo.ImageUrl = ""; |
| hfHeaderLogo.Value = ""; |
| } |
| } |
| else |
| { |
| imgHeaderLogo.Visible = false; |
| imgHeaderLogo.ImageUrl = ""; |
| hfHeaderLogo.Value = ""; |
| } |
| } |
| private void SaveWebConfImageToServer(Provider provider) |
| { |
| SaveLocalImage(RadUploadWebConfLogo, 150, 38, hfWebConfLogo); |
| if (RadUploadWebConfLogo.InvalidFiles.Count == 0 && hfWebConfLogo.Value.Length > 0) |
| { |
| if (SaveImage("consoleLogo", Server.UrlDecode(hfWebConfLogo.Value), provider)) |
| { |
| imgConfLogo.Visible = true; |
| imgConfLogo.ImageUrl = "~/utilities/imageStreamer.aspx?imageType=consoleLogo&hubId=" + hfBrandingId.Value; |
| hfWebConfLogo.Value = ""; |
| } |
| else |
| { |
| imgConfLogo.Visible = false; |
| hfWebConfLogo.Value = ""; |
| resultHandler.ChangeStatus(ActionStatus.Warning, "Unable to update information"); |
| } |
| } |
| } |
| private bool SaveImage(string baseFileName, string finalFullPath, Provider provider) |
| { |
| int returnVal = int.MinValue; |
| if (Session["hubId"] != null) |
| { |
| var client = new ServiceLocator().ClientService().GetDomainClientById((int)Session["clientId"]); |
| if (!Validator.ValidateBrandingPermission(client, CurrentHub.Id, Page)) |
| throw new Exception(Validator.InvalidPermissionMsg); |
| if (finalFullPath.Length != 0) |
| { |
| switch (baseFileName.ToLower()) |
| { |
| case "consolelogo": |
| finalFullPath = |
| SaveNASImage(finalFullPath, |
| WebConfigurationManager.AppSettings["BrandingLogoPathPrefix"], baseFileName) |
| .Replace(WebConfigurationManager.AppSettings["BrandingLogoPathPrefix"], ""); |
| _serviceLocator.BrandingService().SetBrandingProperty(brandId, applicationName, defaultLanguage, "DisplaySettings", "Images", "ConsoleLogo", finalFullPath, Session["clientId"].ToString()); |
| break; |
| case "headerlogo": |
| finalFullPath = |
| SaveNASImage(finalFullPath, |
| WebConfigurationManager.AppSettings["BrandingLogoPathPrefix"], baseFileName) |
| .Replace(WebConfigurationManager.AppSettings["BrandingLogoPathPrefix"], ""); |
| _serviceLocator.BrandingService().SetBrandingProperty(brandId, applicationName, defaultLanguage, "DisplaySettings", "Images", "HeaderLogo", finalFullPath, Session["clientId"].ToString()); |
| break; |
| } |
| returnVal = 1; |
| } |
| } |
| return returnVal != int.MinValue; |
| } |
| private string SaveNASImage(string finalFullPath, string path_prefix, string baseFilename) |
| { |
| var filePath = new StringBuilder(); |
| filePath.Append(DateTime.Today.ToString("yyyyMMdd") + "/" + Hub.Common.GlobalRandom.Next() + "/"); |
| var filename = filePath + baseFilename + "-" + DateTime.Now.ToString("yyyyMMdd-HHmmssfff") + "-" + new Random().Next(10000, 99999); |
| var fileExtension = ""; |
| var extIndex = finalFullPath.LastIndexOf("."); |
| if (extIndex >= 0) |
| { |
| fileExtension = finalFullPath.Substring(extIndex); |
| } |
| var finalRelativePath = path_prefix + filename + fileExtension; |
| if (!FileManager.TransferFileToNAS(finalFullPath, finalRelativePath)) |
| { |
| throw new Exception(baseFilename + " could not be saved. Operation aborted."); |
| } |
| return finalRelativePath; |
| } |
| private void SaveLocalImage(RadUpload upLogo, int maxWidth, int maxHeight, HiddenField hfLogo) |
| { |
| if (upLogo.UploadedFiles.Count > 0) |
| { |
| var statusMessage = ""; |
| var path = System.Web.Configuration.WebConfigurationManager.AppSettings["BrandingImagesRootFolder"] + "\\" + |
| DateTime.Today.ToString("yyyyMMdd") + "\\" + Hub.Common.GlobalRandom.Next() + "\\"; |
| if (!Directory.Exists(path)) |
| { |
| Directory.CreateDirectory(path); |
| } |
| var finalFullPath = path + upLogo.UploadedFiles[0].GetName(); |
| upLogo.UploadedFiles[0].SaveAs(finalFullPath, true); |
| System.Drawing.Image imageCheck; |
| try |
| { |
| imageCheck = System.Drawing.Image.FromFile(finalFullPath); |
| if (!imageCheck.RawFormat.Equals(ImageFormat.Jpeg) && !imageCheck.RawFormat.Equals(ImageFormat.Gif)) |
| { |
| statusMessage = "Unable to update logo due to the following error: " + upLogo.UploadedFiles[0].GetName() + " is not a jpg or gif."; |
| } |
| else if (imageCheck.Height > maxHeight || imageCheck.Width > maxWidth) |
| { |
| statusMessage = "Unable to update logo due to the following error: " + |
| upLogo.UploadedFiles[0].GetName() + " is larger than " + maxWidth + |
| " pixels wide and " + maxHeight + " pixels high."; |
| } |
| imageCheck.Dispose(); |
| } |
| catch |
| { |
| statusMessage = "Unable to update logo due to the following error: " + upLogo.UploadedFiles[0].GetName() + " is not an image."; |
| } |
| if (statusMessage.Length > 0) |
| { |
| hfLogo.Value = ""; |
| resultHandler.ResetStatus(); |
| resultHandler.ChangeStatus(ActionStatus.Error, statusMessage); |
| if (File.Exists(finalFullPath)) |
| { |
| File.Delete(finalFullPath); |
| } |
| } |
| else |
| { |
| hfLogo.Value = Server.UrlEncode(finalFullPath); |
| } |
| } |
| else if (upLogo.InvalidFiles.Count > 0) |
| { |
| //Do nothing and let resultHandler display message. |
| } |
| else if (hfLogo.Value.Length == 0) |
| { |
| resultHandler.ResetStatus(); |
| resultHandler.ChangeStatus(ActionStatus.Error, "Unable to update logo due to the following error: No logo file was specified"); |
| } |
| return; |
| } |
| #endregion |
| #region Event Handlers |
| protected void btnSearchEnterprise_Click(object sender, EventArgs e) |
| { |
| var searchResult = new EnterpriseService().Find("", txtEnterpriseName.Text.Trim(), ddlEnterpriseType.SelectedValue, NameSearchType.Contains, AssociationSearchType.UnassociatedOnly); |
| lstSearchResults.Items.Clear(); |
| foreach (var enterprise in searchResult) |
| { |
| lstSearchResults.Items.Add(enterprise.Name); |
| } |
| } |
| protected void btnDeleteSelected_Click(object sender, EventArgs e) |
| { |
| var removeCollection = new ListItemCollection(); |
| foreach (ListItem item in lstSelectedEnterprises.Items) |
| { |
| if (!item.Selected) |
| { |
| continue; |
| } |
| removeCollection.Add(item); |
| if (!lstSearchResults.Items.Contains(item)) |
| { |
| lstSearchResults.Items.Add(item); |
| } |
| } |
| foreach (ListItem removeItem in removeCollection) |
| { |
| lstSelectedEnterprises.Items.Remove(removeItem); |
| } |
| } |
| protected void btnAddEnterprise_Click(object sender, EventArgs e) |
| { |
| var removeCollection = new ListItemCollection(); |
| foreach (ListItem item in lstSearchResults.Items) |
| { |
| if (!item.Selected) |
| { |
| continue; |
| } |
| removeCollection.Add(item); |
| if (!lstSelectedEnterprises.Items.Contains(item)) |
| { |
| lstSelectedEnterprises.Items.Add(item); |
| } |
| } |
| foreach (ListItem removeItem in removeCollection) |
| { |
| lstSearchResults.Items.Remove(removeItem); |
| } |
| } |
| public void RadUpload_ValidatingFile(object sender, ValidateFileEventArgs e) |
| { |
| resultHandler.ResetStatus(); |
| if (e.UploadedFile.ContentLength > _MAX_FILE_SIZE) |
| { |
| resultHandler.ChangeStatus(ActionStatus.Error, "<b>" + e.UploadedFile.GetName() + ":</b> Exceeds Maximum File Size<br>"); |
| e.IsValid = false; |
| } |
| else |
| { |
| switch (e.UploadedFile.GetExtension().ToLower()) |
| { |
| case ".jpg": |
| case ".gif": |
| e.IsValid = true; |
| break; |
| default: |
| resultHandler.ChangeStatus(ActionStatus.Error, "<b>" + e.UploadedFile.GetName() + ":</b> Unknown File Type<br>"); |
| e.IsValid = false; |
| break; |
| } |
| } |
| e.SkipInternalValidation = true; |
| } |
| protected void btnWebConfLogoPreview_Click(object sender, EventArgs e) |
| { |
| SaveLocalImage(RadUploadWebConfLogo, 150, 38, hfWebConfLogo); |
| if (RadUploadWebConfLogo.InvalidFiles.Count == 0 && hfWebConfLogo.Value.Length != 0) |
| { |
| imgConfLogo.Visible = true; |
| //string path = Server.UrlDecode(hfWebConfLogo.Value); |
| //imgConfLogo.ImageUrl = path; |
| imgConfLogo.ImageUrl = "~/utilities/imagePreview.aspx?path=" + hfWebConfLogo.Value; |
| btnWebConfLogoSave.Visible = true; |
| } |
| else |
| { |
| imgConfLogo.Visible = false; |
| imgConfLogo.ImageUrl = ""; |
| hfWebConfLogo.Value = ""; |
| } |
| } |
| protected void btnWebLogoSave_Click(object sender, EventArgs e) |
| { |
| SaveWebConfImageToServer(_provider); |
| } |
| protected void btnHubLogoSave_Click(object sender, EventArgs e) |
| { |
| SaveHeaderImageToServer(_provider); |
| } |
| protected void btnHeaderLogoPreview_Click(object sender, EventArgs e) |
| { |
| SaveLocalImage(RadUploadHeaderLogo, 150, 60, hfHeaderLogo); |
| if (RadUploadHeaderLogo.InvalidFiles.Count == 0 && hfHeaderLogo.Value.Length != 0) |
| { |
| imgHeaderLogo.Visible = true; |
| imgHeaderLogo.ImageUrl = "~/utilities/imagePreview.aspx?path=" + hfHeaderLogo.Value; |
| btnHeaderLogoSave.Visible = true; |
| } |
| else |
| { |
| imgHeaderLogo.Visible = false; |
| imgHeaderLogo.ImageUrl = ""; |
| hfHeaderLogo.Value = ""; |
| } |
| } |
| protected void btnClearResults_Click(object sender, EventArgs e) |
| { |
| lstSearchResults.Items.Clear(); |
| txtEnterpriseName.Text = ""; |
| } |
| #endregion |
| protected void onTabClick(object sender, RadTabStripEventArgs e) |
| { |
| if (e.Tab.Value == "3") |
| { |
| actionBtns.Visible = true; |
| } |
| if (e.Tab.Value == "4") |
| { |
| if (edit == false) |
| { |
| actionBtns.Visible = true; |
| resultHandler.ChangeStatus(ActionStatus.Warning, "Please save your provider information before entering your branding options."); |
| RadTab tab = tabstripProviderOptions.FindTabByValue("3"); |
| tab.Selected = true; |
| RadPageView pageView = MultiPageBranding.FindPageViewByID("netspokeOptions"); |
| pageView.Selected = true; |
| } |
| else |
| { |
| SaveData(); |
| actionBtns.Visible = false; |
| } |
| } |
| } |
| protected void UpdateBranding(object source, GridUpdatedEventArgs e) |
| { |
| } |
| protected void InsertBranding(object source, GridInsertedEventArgs e) |
| { |
| } |
| protected void DeleteBranding(object source, GridDeletedEventArgs e) |
| { |
| } |
| protected void BrandingUpdate() |
| { |
| } |
| } |
| } |