2010-08-31 4 views

Répondre

1

pas la meilleure approche, mais cela fonctionne, ajoutez le script suivant sur votre page CEWP ou en ligne:

<script type="text/javascript"> 

_spBodyOnLoadFunctionNames.push("myFuncafterLoad"); 

function myFuncafterLoad(){var OldCalendarNotify4a = SP.UI.ApplicationPages.CalendarNotify.$4a;SP.UI.ApplicationPages.CalendarNotify.$4a = function(){myFunctoExpandCalendar();OldCalendarNotify4a();}} 

function myFunctoExpandCalendar(){try{var aTags=document.getElementsByTagName('A');for(i=0;i<aTags.length;i++){try{if(aTags[i].evtid=="expand_collapse"){aTags[i].click();break;}}catch(err){ alert('Bad Call at' + aTags[i].href);}}}catch(err){alert(err.message);}}</script> 

Qu'est-ce que il le fait après que le calendrier est chargé, il recherche le premier lien d'expansion et simule un clic.

Je devais utiliser le Javascript traditionnel car je ne peux pas déclencher de clic en utilisant JQuery, parce que la méthode de clic n'est pas ajoutée en utilisant JQuery. Faites-moi savoir si somefine trouve une meilleure solution.

+1

ce script est pas parfait. Une seule rangée de calendrier est étendue ... Je n'ai pas encore trouvé d'autre solution. – scrat789

2

Kuldeep, merci pour ce script! Je l'ai légèrement modifié pour étendre toutes les lignes du calendrier en supprimant la coupure et en vérifiant si le texte d'ancrage est "collapse". Si ce n'est pas "s'effondrer", un clic est exécuté. Notez qu'il vous suffit de cliquer sur un élément par ligne. Sinon, vous pouvez revenir à l'état replié.

Un autre effet secondaire problématique de l'ajout du CEWP à la page Calendrier est que vous perdez la liste déroulante Modifier la vue. Vous devez utiliser le ruban calendrier pour changer de vue.

Je voudrais également trouver une solution plus robuste, mais voici ma solution slighly améliorée:

<script type="text/javascript"> 

_spBodyOnLoadFunctionNames.push("myFuncAfterLoad"); 

function myFuncAfterLoad() { 
    var oldCalendarNotify4a = SP.UI.ApplicationPages.CalendarNotify.$4a; 

    SP.UI.ApplicationPages.CalendarNotify.$4a = function() { 
     oldCalendarNotify4a(); 
     myFuncToExpandCalendar(); 
    } 
} 

function myFuncToExpandCalendar() { 
    try { 
     var aTags = document.getElementsByTagName('A'); 
     for (i = 0; i < aTags.length; i++) { 

      if ((aTags[i].evtid == "expand_collapse") && (aTags[i].innerText != "collapse")) { 
       (aTags[i]).click(); 
      } 
     } 
    } 
    catch (err) { 
     alert(err.message); 
    } 
} 

</script> 
1

Deux options pour celui-ci. Collez l'un ou l'autre des éléments suivants dans un CEWP.

La première remplacera la fonction utilisée pour déterminer le nombre d'éléments à afficher avant d'afficher le lien expansion/réduction. J'ai mis ceci à 100 dans l'exemple ci-dessous pour m'assurer que dans mon cas d'utilisation, je ne vois même pas les boutons d'expansion/effondrement et j'obtiens toujours chaque article rendu tout le temps.

<script type="text/javascript"> 

_spBodyOnLoadFunctionNames.push('WaitForCalendarToLoad'); 

function WaitForCalendarToLoad() 
{ 
    SP.UI.ApplicationPages.SummaryItemRenderer.prototype.$2u = function() 
    { 
      ULSvSp: ; 
      if (!this.$1A_1) this.$1A_1 = 100; 
      return this.$1A_1 
     } 
} 
</script> 

La deuxième option remplace le calendrier notifier l'événement, de sorte que lorsque tous les éléments sont rendus, le script trouvera la première instance de calendrier, et l'appeler Développons toutes les fonctions. Cela garantira que chaque cellule est étendue par défaut mais affichera toujours les liens de réduction.

<script type="text/javascript"> 

_spBodyOnLoadFunctionNames.push('WaitForCalendarToLoad'); 

function WaitForCalendarToLoad() 
{ 
    var old$4a = SP.UI.ApplicationPages.CalendarNotify.$4a; 

    SP.UI.ApplicationPages.CalendarNotify.$4a = function() 
    { 
     old$4a(); 

     ctrl = SP.UI.ApplicationPages.CalendarInstanceRepository.firstInstance(); 

     if (ctrl) { 
      ctrl.expandAll(); 
     } 
    } 
} 
</script> 
+2

Merci, Andy. Vos deux solutions fonctionnent très bien. J'ai juste pensé que je mentionnerais que $ 4a a changé à $ 4b dans SP1. –

+0

Merci d'avoir signalé cela à Randy, je n'étais pas au courant de cela et je suis sûr que ça va me piquer à un moment donné. –

-1
function expandCalendar() 
{ 
    var calendar = SP.UI.ApplicationPages.CalendarInstanceRepository.firstInstance(); 
    if (calendar && typeof calendar.expandAll === 'function') { 
     calendar.expandAll(); 
    } 
Questions connexes