none
Календарь, показать номера недель RRS feed

  • Вопрос

  • Здраствуйте!

    Не получаеться включить отображения номеров недель, включал в региональных настройка сайта:

    но календарь без изменений:

    Должно работать...

    21 июня 2012 г. 12:42

Ответы

  • Стандартными средствами нет.

    Та настройка работает именно для выпадающего календаря, при выборе даты.

    Поковырялся тут с JS и сделал такое решение:

    <script type="text/javascript" src="/_LAYOUTS/jquery-1.6.min.js"></script>
    <script type="text/javascript">
    	function parseDate(value){
    		var val = value.split(".");
    		return new Date(parseInt(val[2]), parseInt(val[1]), parseInt(val[0]));
    	}
    	
    	function getWeek (getdate) { 
            var a, b, c, d, e, f, g, n, s, w; 
             
            $y = getdate.getFullYear(); 
            $m = getdate.getMonth() + 1; 
            $d = getdate.getDate(); 
     
            if ($m <= 2) { 
                a = $y - 1; 
                b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); 
                c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); 
                s = b - c; 
                e = 0; 
                f = $d - 1 + (31 * ($m - 1)); 
            } else { 
                a = $y; 
                b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); 
                c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); 
                s = b - c; 
                e = s + 1; 
                f = $d + ((153 * ($m - 3) + 2) / 5) + 58 + s; 
            } 
             
            g = (a + b) % 7; 
            d = (f + g - e) % 7; 
            n = (f + 3 - d) | 0; 
     
            if (n < 0) { 
                w = 53 - ((g - s) / 5 | 0); 
            } else if (n > 364 + s) { 
                w = 1; 
            } else { 
                w = (n / 7 | 0) + 1; 
            } 
             
            $y = $m = $d = null; 
             
            return w; 
        }
    	
    	$(document).ready(function() {
    		$('th[evtid="week"]').each(function() {
    			var week = getWeek(parseDate(this.date));
    			$(this).css('vertical-align', 'middle');
    			$(this).append('<h3>' + week + '</h3>');
    		});
    	});    
    </script>
    

    Получился такой результат:


    Осталось доработать чтобы номера недель обновлялись при смене месяца, но это вы как-нибудь уже сами... :)


    My contributions: SharePoint 2010 Solution Installer

    • Помечено в качестве ответа Roman Zhukov 26 июня 2012 г. 12:28
    23 июня 2012 г. 22:14

Все ответы

  • посмотрите обсуждение Week numbers not showing up in Date navigator

    Innovation distinguishes between a leader and a follower - Steve Jobs

    21 июня 2012 г. 12:53
  • Я так и зделал, у Параметрах сайта установил галочку "показывать номера недель " и у параметрах пользователя установил "Всегда использовать параметры веб-сайта"

    И все равно не отображает

    21 июня 2012 г. 12:59
  • Номера отображаються только при создание нового собития:

    А от у самом календаре нет, неужели так и должно бить?

    21 июня 2012 г. 14:04
  • Стандартными средствами нет.

    Та настройка работает именно для выпадающего календаря, при выборе даты.

    Поковырялся тут с JS и сделал такое решение:

    <script type="text/javascript" src="/_LAYOUTS/jquery-1.6.min.js"></script>
    <script type="text/javascript">
    	function parseDate(value){
    		var val = value.split(".");
    		return new Date(parseInt(val[2]), parseInt(val[1]), parseInt(val[0]));
    	}
    	
    	function getWeek (getdate) { 
            var a, b, c, d, e, f, g, n, s, w; 
             
            $y = getdate.getFullYear(); 
            $m = getdate.getMonth() + 1; 
            $d = getdate.getDate(); 
     
            if ($m <= 2) { 
                a = $y - 1; 
                b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); 
                c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); 
                s = b - c; 
                e = 0; 
                f = $d - 1 + (31 * ($m - 1)); 
            } else { 
                a = $y; 
                b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); 
                c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); 
                s = b - c; 
                e = s + 1; 
                f = $d + ((153 * ($m - 3) + 2) / 5) + 58 + s; 
            } 
             
            g = (a + b) % 7; 
            d = (f + g - e) % 7; 
            n = (f + 3 - d) | 0; 
     
            if (n < 0) { 
                w = 53 - ((g - s) / 5 | 0); 
            } else if (n > 364 + s) { 
                w = 1; 
            } else { 
                w = (n / 7 | 0) + 1; 
            } 
             
            $y = $m = $d = null; 
             
            return w; 
        }
    	
    	$(document).ready(function() {
    		$('th[evtid="week"]').each(function() {
    			var week = getWeek(parseDate(this.date));
    			$(this).css('vertical-align', 'middle');
    			$(this).append('<h3>' + week + '</h3>');
    		});
    	});    
    </script>
    

    Получился такой результат:


    Осталось доработать чтобы номера недель обновлялись при смене месяца, но это вы как-нибудь уже сами... :)


    My contributions: SharePoint 2010 Solution Installer

    • Помечено в качестве ответа Roman Zhukov 26 июня 2012 г. 12:28
    23 июня 2012 г. 22:14