or
<
telerik:RadButton
ID
=
"rbSearchButton"
runat
=
"server"
>
<
Icon
PrimaryIconUrl
=
"Images/search.png"
PrimaryIconLeft
=
"5"
/>
</
telerik:RadButton
>
<%@ Control Language="C#" %>
<%@ Import namespace="System" %>
<%@ Import namespace="System.Collections.Generic" %>
<%@ Import namespace="System.Linq" %>
<%@ Import namespace="System.Web" %>
<%@ Import namespace="System.Web.UI" %>
<%@ Import namespace="System.Web.UI.WebControls" %>
<%@ Import namespace="Telerik.Sitefinity" %>
<%@ Import namespace="Telerik.Sitefinity.GenericContent.Model" %>
<%@ Import namespace="Telerik.Sitefinity.Modules.Events" %>
<%@ Import namespace="Telerik.Sitefinity.Events.Model" %>
<%@ Import namespace="Telerik.Sitefinity.Taxonomies" %>
<%@ Import namespace="Telerik.Sitefinity.Taxonomies.Model" %>
<%@ Import namespace="Telerik.Sitefinity.Model" %>
<
script
language
=
"c#"
runat
=
"server"
>
protected void Page_Load(object sender, EventArgs e)
{
Scheduler1.ReadOnly = true;
Scheduler1.Height = 680;
Scheduler1.DataSource = GetSourceItems();
Scheduler1.Width = 600;
Scheduler1.FirstDayOfWeek = DayOfWeek.Monday;
Scheduler1.OverflowBehavior = OverflowBehavior.Expand;
}
protected virtual IList<
Event
> GetSourceItems()
{
var list = new List<
Event
>();
list = App.WorkWith().Events().Where(c => c.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).Get().ToList();
return list;
}
public void Scheduler1_AppointmentCreated(object sender, Telerik.Web.UI.AppointmentCreatedEventArgs e)
{
var EManager = EventsManager.GetManager();
var c = (HyperLink)e.Container.FindControl("eventDetailsLink");
var data = EManager.GetEvent(new Guid(e.Appointment.ID.ToString()));
c.Text = data.Title;
c.NavigateUrl = "/what's-on" + data.Urls.Where(u => u.RedirectToDefault == false).SingleOrDefault().Url;
var TestID = new Guid("5A5214E8-1186-4422-AC72-B62465F6C1DB");
var CraftID = new Guid("90B70923-CA5B-431A-8231-AB855E50C237");
var SummerID = new Guid("AB021AF6-D57C-45F4-A1A2-771AF0DA2BC5");
if (data.GetValue<
IList
<Guid>>("Category").Contains(TestID))
{
e.Appointment.BackColor = System.Drawing.Color.Yellow;
}
if (data.GetValue<
IList
<Guid>>("Category").Contains(CraftID))
{
e.Appointment.BackColor = System.Drawing.Color.Beige;
}
if (data.GetValue<
IList
<Guid>>("Category").Contains(SummerID))
{
e.Appointment.BackColor = System.Drawing.ColorTranslator.FromHtml("#ff00ff");
}
}
private void schedLoad_AppointmentCanceling(object sender, Telerik.Web.UI.AppointmentCancelingEditEventArgs e)
{
e.Cancel = true;
}
private void WriteCalendar(string data)
{
HttpResponse response = Page.Response;
response.Clear();
response.Buffer = true;
response.ContentType = "text/calendar";
response.ContentEncoding = Encoding.UTF8;
response.Charset = "utf-8";
response.AddHeader("Content-Disposition", "attachment;filename=\"RadSchedulerExport.ics\"");
response.Write(data);
response.End();
}
protected void Button2_Click(object sender, ImageClickEventArgs e)
{
WriteCalendar(RadScheduler.ExportToICalendar(Scheduler1.Appointments));
}
</
script
>
<
telerik:RadScheduler
runat
=
"server"
ID
=
"Scheduler1"
SelectedView
=
"MonthView"
DataKeyField
=
"Id"
DataSubjectField
=
"Title"
DataStartField
=
"EventStart"
DataEndField
=
"EventEnd"
IsReadOnly
=
"True"
OnAppointmentCreated
=
"Scheduler1_AppointmentCreated"
>
<
AppointmentTemplate
>
<
asp:HyperLink
id
=
"eventDetailsLink"
runat
=
"server"
/>
</
AppointmentTemplate
>
</
telerik:RadScheduler
>
<
asp:ImageButton
ID
=
"bttn1"
runat
=
"server"
ImageUrl
=
"Export.gif"
AlternateText
=
"Export to iCalendar"
onclick
=
"Button2_Click"
/>
<%@ Control Language="C#" AutoEventWireup="true" Inherits="SchedulerTemplatesCS.AdvancedForm" Codebehind="AdvancedFormCS.ascx.cs" %> <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> <div class="rsAdvancedEdit rsAdvancedModal" style="position: relative"> <div class="rsModalBgTopLeft"> </div> <div class="rsModalBgTopRight"> </div> <div class="rsModalBgBottomLeft"> </div> <div class="rsModalBgBottomRight"> </div> <%-- Title bar. --%> <div class="rsAdvTitle"> <%-- The rsAdvInnerTitle element is used as a drag handle when the form is modal. --%> <h1 class="rsAdvInnerTitle"> <%= (this.Mode.ToString() == "Edit") ? Owner.Localization.AdvancedEditAppointment : Owner.Localization.AdvancedNewAppointment %></h1> <asp:LinkButton runat="server" ID="AdvancedEditCloseButton" CssClass="rsAdvEditClose" CommandName="Cancel" CausesValidation="false" ToolTip='<%# Owner.Localization.AdvancedClose %>'> <%= Owner.Localization.AdvancedClose %> </asp:LinkButton> </div> <div class="rsAdvContentWrapper"> <%-- Scroll container - when the form height exceeds MaximumHeight scrollbars will appear on this element--%> <div class="rsAdvOptionsScroll"> <asp:Panel runat="server" ID="AdvancedEditOptionsPanel" CssClass="rsAdvOptions"> <asp:Panel runat="server" ID="BasicControlsPanel" CssClass="rsAdvBasicControls"> <asp:Label runat="server" ID="SubjectText" Width="100%" Label='<%# Owner.Localization.AdvancedSubject + ":" %>' EnableSingleInputRendering="false" /> <ul class="rsTimePickers"> <li class="rsTimePick"> <label for='<%= StartDate.ClientID %>_dateInput_text'> <%= Owner.Localization.AdvancedFrom %></label><%-- Leaving a newline here will affect the layout, so we use a comment instead. --%><telerik:RadDatePicker runat="server" ID="StartDate" CssClass="rsAdvDatePicker" Width="83px" SharedCalendarID="SharedCalendar" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>' > <DatePopupButton Visible="False"/> <DateInput ID="DateInput2" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>' EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false"/> </telerik:RadDatePicker> <%-- --%><telerik:RadTimePicker runat="server" ID="StartTime" CssClass="rsAdvTimePicker" Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'> <TimeView ShowHeader="true" HeaderText="Sélectionner une heure de début" runat="server" Skin='<%# Owner.Skin %>' ID="TimeViewStart" /> <DateInput ID="DateInput3" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false" /> <TimePopupButton Visible="false" /> </telerik:RadTimePicker> </li> <li class="rsTimePick"> <label for='<%= EndDate.ClientID %>_dateInput_text'> <%= Owner.Localization.AdvancedTo%></label><%-- --%><telerik:RadDatePicker runat="server" ID="EndDate" CssClass="rsAdvDatePicker" Width="83px" SharedCalendarID="SharedCalendar" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'> <DatePopupButton Visible="False"/> <DateInput ID="DateInput4" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>' EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false"/> </telerik:RadDatePicker> <%-- --%><telerik:RadTimePicker runat="server" ID="EndTime" CssClass="rsAdvTimePicker" Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'> <TimeView ShowHeader="true" HeaderText="Sélectionner une heure de fin" runat="server" Skin='<%# Owner.Skin %>' ID="TimeViewEnd" /> <DateInput ID="DateInput5" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false"/> <TimePopupButton Visible="false" /> </telerik:RadTimePicker> </li> </ul> <asp:RequiredFieldValidator runat="server" ID="StartDateValidator" ControlToValidate="StartDate" EnableClientScript="true" Display="None" CssClass="rsValidatorMsg" /> <asp:RequiredFieldValidator runat="server" ID="StartTimeValidator" ControlToValidate="StartTime" EnableClientScript="true" Display="None" CssClass="rsValidatorMsg" /> <asp:RequiredFieldValidator runat="server" ID="EndDateValidator" ControlToValidate="EndDate" EnableClientScript="true" Display="None" CssClass="rsValidatorMsg" /> <asp:RequiredFieldValidator runat="server" ID="EndTimeValidator" ControlToValidate="EndTime" EnableClientScript="true" Display="None" CssClass="rsValidatorMsg" /> <asp:CustomValidator runat="server" ID="DurationValidator" ControlToValidate="StartDate" EnableClientScript="false" Display="Dynamic" CssClass="rsValidatorMsg rsInvalid" OnServerValidate="DurationValidator_OnServerValidate" /> </asp:Panel> <telerik:RadCalendar runat="server" ID="SharedCalendar" Skin='<%# Owner.Skin %>' CultureInfo='<%# Owner.Culture %>' EnableNavigation="true" DayCellToolTipFormat="dddd, dd MMMM, yyyy" EnableMultiSelect="False" FirstDayOfWeek="Monday" ShowDayCellToolTips="False" EnableMonthYearFastNavigation="False" /> </asp:Panel> </div> <asp:Panel runat="server" ID="ButtonsPanel" CssClass="rsAdvancedSubmitArea"> <div class="rsAdvButtonWrapper"> <asp:LinkButton runat="server" ID="UpdateButton" CssClass="rsAdvEditSave"> <span><%= Owner.Localization.Save %></span> </asp:LinkButton> <asp:LinkButton runat="server" ID="CancelButton" CssClass="rsAdvEditCancel" CommandName="Cancel" CausesValidation="false"> <span><%= Owner.Localization.Cancel %></span> </asp:LinkButton> </div> </asp:Panel> </div> </div>------------------------------------------
using System; using System.ComponentModel; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; using Telerik.Web.UI; using Telerik.Web.UI.Calendar; namespace SchedulerTemplatesCS { /// <summary> /// Specifies the advanced form mode. /// </summary> public enum AdvancedFormMode { Insert, Edit } public partial class AdvancedForm : UserControl { #region Private members private bool FormInitialized { get { return (bool) (ViewState["FormInitialized"] ?? false); } set { ViewState["FormInitialized"] = value; } } private AdvancedFormMode mode = AdvancedFormMode.Insert; #endregion #region Protected properties protected RadScheduler Owner { get { return Appointment.Owner; } } protected Appointment Appointment { get { SchedulerFormContainer container = (SchedulerFormContainer) BindingContainer; return container.Appointment; } } #endregion #region Public properties public AdvancedFormMode Mode { get { return mode; } set { mode = value; } } [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public string Subject { get { return SubjectText.Text; } set { SubjectText.Text = value; } } [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public DateTime Start { get { DateTime result = StartDate.SelectedDate.Value.Date; TimeSpan time = StartTime.SelectedDate.Value.TimeOfDay; result = result.Add(time); return Owner.DisplayToUtc(result); } set { StartDate.SelectedDate = Owner.UtcToDisplay(value); StartTime.SelectedDate = Owner.UtcToDisplay(value); } } [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)] public DateTime End { get { DateTime result = EndDate.SelectedDate.Value.Date; TimeSpan time = EndTime.SelectedDate.Value.TimeOfDay; result = result.Add(time); return Owner.DisplayToUtc(result); } set { EndDate.SelectedDate = Owner.UtcToDisplay(value); EndTime.SelectedDate = Owner.UtcToDisplay(value); } } #endregion protected void Page_Load(object sender, EventArgs e) { UpdateButton.ValidationGroup = Owner.ValidationGroup; UpdateButton.CommandName = Mode == AdvancedFormMode.Edit ? "Update" : "Insert"; InitializeStrings(); SetDates(); } protected void DurationValidator_OnServerValidate(object source, ServerValidateEventArgs args) { args.IsValid = (End - Start) > TimeSpan.Zero; } #region Private methods private void InitializeStrings() { StartDateValidator.ErrorMessage = Owner.Localization.AdvancedStartDateRequired; StartDateValidator.ValidationGroup = Owner.ValidationGroup; StartTimeValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeRequired; StartTimeValidator.ValidationGroup = Owner.ValidationGroup; EndDateValidator.ErrorMessage = Owner.Localization.AdvancedEndDateRequired; EndDateValidator.ValidationGroup = Owner.ValidationGroup; EndTimeValidator.ErrorMessage = Owner.Localization.AdvancedEndTimeRequired; EndTimeValidator.ValidationGroup = Owner.ValidationGroup; DurationValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeBeforeEndTime; DurationValidator.ValidationGroup = Owner.ValidationGroup; DurationValidator.Visible = true; SharedCalendar.FastNavigationSettings.OkButtonCaption = Owner.Localization.AdvancedCalendarOK; SharedCalendar.FastNavigationSettings.CancelButtonCaption = Owner.Localization.AdvancedCalendarCancel; SharedCalendar.FastNavigationSettings.TodayButtonCaption = Owner.Localization.AdvancedCalendarToday; } private void SetDates() { DayOfWeek dayToday = DateTime.Now.DayOfWeek; int nbJourASoustraire = 0; switch (dayToday) { case DayOfWeek.Monday: break; case DayOfWeek.Tuesday: nbJourASoustraire = 1; break; case DayOfWeek.Wednesday: nbJourASoustraire = 2; break; case DayOfWeek.Thursday: nbJourASoustraire = 3; break; case DayOfWeek.Friday: nbJourASoustraire = 4; break; case DayOfWeek.Saturday: nbJourASoustraire = 5; break; case DayOfWeek.Sunday: nbJourASoustraire = 6; break; } DateTime minDate = DateTime.Now.AddDays(-nbJourASoustraire); SharedCalendar.RangeMinDate = minDate; SharedCalendar.RangeMaxDate = minDate.AddDays(6); } #endregion } }
----------------------------------------
Part of my Scheduler.aspx :<telerik:RadScheduler runat="server" ID="rsPlanning" OnClientAppointmentClick="appointmentClick" RowHeight="35px" ValidationGroup="Toto" Culture="fr-FR" DataEndField="DT_FIN" DataKeyField="ID_PLANNING" DataSourceID="edsPlanning" DataStartField="DT_DEBUT" DataSubjectField="SUJET" GroupBy="Groupement" OnAppointmentInsert="rsPlanning_AppointmentInsert" OnAppointmentDelete="rsPlanning_AppointmentDelete" SelectedView="TimelineView" ShowFooter="False" ShowViewTabs="False" WorkDayEndTime="05:00:00" WorkDayStartTime="05:00:00" DayEndTime="05:00:00" DayStartTime="05:00:00" LastDayOfWeek="Monday" FirstDayOfWeek="Monday" ShowHeader="True" BorderColor="#999999" BorderWidth="1" BorderStyle="Solid" ShowAllDayRow="True" ShowNavigationPane="False" Skin="Windows7" OnNavigationCommand="rsPlanning_NavigationCommand" AppointmentStyleMode="Default" OnAppointmentDataBound="rsPlanning_AppointmentDataBound" OnClientAppointmentMoving="onClientAppointmentMovingHandler" AllowInsert="False" OnClientAppointmentResizeEnd="onClientAppointmentResizEndHandler" EditFormDateFormat="dddd" OnClientFormCreated="schedulerFormCreated" OverflowBehavior="Expand"> <Localization AdvancedEditAppointment="Editer affectation" AdvancedNewAppointment="Nouvelle affectation" AdvancedCalendarCancel="Annuler" AdvancedClose="Fermer" AdvancedEndDateRequired="Date de fin requise" AdvancedEndTimeRequired="Heure de fin requise" AdvancedFrom="Date début" AdvancedNoEndDate="Pas date de fin" AdvancedStartDateRequired="Date de début requise" AdvancedStartTimeBeforeEndTime="la date de début doit précéder la date de fin" AdvancedStartTimeRequired="Heure de début requise" AdvancedSubject="Gare" Cancel="Annuler" ConfirmCancel="Annuler" ConfirmDeleteText="Etes-vous sûr de vouloir supprimer cette affectation ?" ConfirmDeleteTitle="Suppression affectation" ContextMenuDelete="Supprimer" ContextMenuEdit="Editer" Save="Enregistrer" AdvancedTo="Date fin" /> <TimelineView GroupingDirection="Vertical" NumberOfSlots="21" ColumnHeaderDateFormat="dddd" EnableExactTimeRendering="True" SlotDuration="08:00:00" StartTime="05:00:00" TimeLabelSpan="3" HeaderDateFormat="dddd" /> <ExportSettings FileName="PlanningExport" OpenInNewWindow="True"> <Pdf PageTitle="Planning d'affectation des gares" Title="Planning" PaperSize="A4" PageLeftMargin="0mm" PageRightMargin="0mm"/> </ExportSettings> <AdvancedForm EnableResourceEditing="False" MaximumHeight="200px" Modal="True" Width="500px" /> <ResourceTypes> <telerik:ResourceType DataSourceID="edsGptPlanning" ForeignKeyField="ID_GROUPEMENT" KeyField="ID_GROUPEMENT" Name="Groupement" TextField="NOM_GROUPEMENT" /> <telerik:ResourceType ForeignKeyField="ID_GARE" KeyField="ID_GARE" Name="Gare" DataSourceID="edsGare" TextField="LI_GARE" /> </ResourceTypes> <AppointmentContextMenuSettings EnableDefault="True" /> <AdvancedEditTemplate> <scheduler:AdvancedForm runat="server" ID="AdvancedEditForm1" Mode="Edit" Subject='<%# Bind("Subject") %>' Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' /> </AdvancedEditTemplate> </telerik:RadScheduler>