powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / 2013 события с иконками в календаре
2 сообщений из 2, страница 1 из 1
2013 события с иконками в календаре
    #39488934
Фотография l_kator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит задача в зависимости от категории события в календаре отображать его заданным цветом и с сооьветствующей иконкой. Я нашла решение для цвета

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
<script type="text/javascript">
LoadSodByKey("SP.UI.ApplicationPages.Calendar.js", function () {
        WaitForCalendarToLoad();
    });
var SEPARATOR = "|||";
  
function WaitForCalendarToLoad() {
        SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids = function SP_UI_ApplicationPages_SummaryCalendarView$renderGrids($p0) {
        var $v_0 = new Sys.StringBuilder();
        var $v_1 = $p0.length;        for (var $v_2 = 0; $v_2 < $v_1; $v_2++) {
            this.$7V_2($v_2, $p0[$v_2]);
        }
        for (var $v_3 = 0; $v_3 < $v_1; $v_3++) {
            $v_0.append('<div>');
            this.$I_2.$7Q_1($v_0, $p0[$v_3], $v_3);
            $v_0.append(this.emptY_DIV);
            $v_0.append('</div>');
        }
        this.setInnerHtml($v_0.toString());
        ColourCalendar();
    }
  
SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed = function($p0, $p1) {
  if (this.$K_1.$8G_0()) {
            this.$28_1();
            return;
        }
        this.$41_1 = false;
        if (this.$3G_1) {
            this.$D_1.$4T_1();
            this.$3G_1 = false;
        }
        if (SP.UI.ApplicationPages.SU.$2(this.$39_1[this.$j_1])) {
            this.$39_1[this.$j_1] = [];
        }
        Array.addRange(this.$39_1[this.$j_1], $p0);
        this.$D_1.$7S_1(this.$j_1, this.$v_1, $p1, this.$39_1[this.$j_1]);
        this.$j_1++;
        this.$1h_1();
  ColourCalendar();
 }
}
  
function ColourCalendar() {
        if(jQuery('a:contains(' + SEPARATOR + ')') != null)
        {            
   jQuery('a:contains(' + SEPARATOR + ')').each(function (i) {
   $box = jQuery(this).parents('div[title]');
   var colour = GetColourCodeFromCategory(GetCategory(this.innerHTML));
   this.innerHTML = GetActualText(this.innerHTML);
   jQuery($box).attr("title", GetActualText(jQuery($box).attr("title")));
   $box.css({'background-color': colour, 'color' : 'black !important;'});
   });       
 }  
}
  
function GetActualText(originalText) {    
 var parts = originalText.split(SEPARATOR);
 return parts[0] + parts[2];  
}
  
function GetCategory(originalText) {
 var parts = originalText.split(SEPARATOR);
 return parts[1];  
}
  
function GetColourCodeFromCategory(category) {
 var colour = null;    
 switch (category.trim()) {
  case 'Meeting':        
   colour = '#4FDB51';
   break;      
  case 'Holiday HU':        
   colour = '#01b789';
   break;      
  case 'Business':        
   colour = "#F08616";
   break;      
  case 'Holiday DE':        
   colour = "##013dbf";        
   break;      
  case 'Belgium':        
   colour = "#bf7901";        
   break;      
  case 'Birthday':        
   colour = "#6E80FA";        
   break;      
  case 'Vocation':        
   colour = "#bf0000";        
   break;    
 }    
 return colour;  
}
</script>



и для иконок

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<script type="text/javascript"> 
var CALENDAR_LIST_TITLE = "Calendar"
 
ExecuteOrDelayUntilScriptLoaded(CustomizeCalendarEvents,"SP.UI.ApplicationPages.Calendar.js");  
 
function CustomizeCalendarEvents() {  
 
    try  
    {        
 
        var _onItemsSucceed = SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed;    
        SP.UI.ApplicationPages.CalendarStateHandler.prototype.onItemsSucceed = function($p0, $p1) {   
            var clientContext = new SP.ClientContext(); 
            //get calendar list
            var calendarList = clientContext.get_web().get_lists().getByTitle(CALENDAR_LIST_TITLE);
 
            //get the value of the icon column for each event
            var items = [];
            for(var i=0; i<$p0.length; i++)   
            {  
                var eventId = $p0[i].$11_0; 
                var calendarListItem = calendarList.getItemById(eventId);
                clientContext.load(calendarListItem, 'Icon');
                items.push(calendarListItem);
            }
 
            //execute query
            clientContext.executeQueryAsync(Function.createDelegate(this, function()
            { 
                for(var i=0; i<$p0.length; i++)   
                { 
                    //get icon
                    var icon = items[i].get_item('Icon') 
                    if(icon && icon.$2_1 )
                    {
                        //append icon to the event titel
                        $p0[i].$3Q_0 = $p0[i].$3Q_0 + "<img src='" + icon.$2_1 + "' /> " 
                    }
                }
                //call original onItemsSucceed
                _onItemsSucceed.call(this, $p0, $p1);  
            }), Function.createDelegate(this, function(){ 
                //call original onItemsSucceed
                _onItemsSucceed.call(this, $p0, $p1); 
            }));
         }; 
    } 
    catch (err) { 
        console.log('An error occured:' + err.message);
    }  
}
 </script>




Но как их совместить?
...
Рейтинг: 0 / 0
2013 события с иконками в календаре
    #39489146
Фотография l_kator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или хотя бы словами скажите, что делает это:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function WaitForCalendarToLoad() {
        SP.UI.ApplicationPages.SummaryCalendarView.prototype.renderGrids = function SP_UI_ApplicationPages_SummaryCalendarView$renderGrids($p0) {
        var $v_0 = new Sys.StringBuilder();
        var $v_1 = $p0.length;        for (var $v_2 = 0; $v_2 < $v_1; $v_2++) {
            this.$7V_2($v_2, $p0[$v_2]);
        }
        for (var $v_3 = 0; $v_3 < $v_1; $v_3++) {
            $v_0.append('<div>');
            this.$I_2.$7Q_1($v_0, $p0[$v_3], $v_3);
            $v_0.append(this.emptY_DIV);
            $v_0.append('</div>');
        }
        this.setInnerHtml($v_0.toString());
        ColourCalendar();
    }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / SharePoint [игнор отключен] [закрыт для гостей] / 2013 события с иконками в календаре
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]