2013 события с иконками в календаре
#39488934
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: München
Сообщения: 532
|
|
Стоит задача в зависимости от категории события в календаре отображать его заданным цветом и с сооьветствующей иконкой. Я нашла решение для цвета
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>
и для иконок
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>
Но как их совместить?
|
|