none
Disparition des affichages (sans spd ou fp) RRS feed

  • Question

  • Bonjour,

     

    J'ai un soucis avec Sharepoint (MOSS), Les vue de ma bibliothèque de document disparaissent au fur et a mesure du développement. J'entend par la qu'elles sont toujours adressables (une navigation sur l'url fonctionne) mais l'édition de la liste ne montre plus l'affchage.

    De ce que j'ai pu voir sur Internet, cela se produit quand on édite avec Sharepoint Designer ou Frontpage ... ce que je ne fait pas.

    Quelqu'un sait-il comment faire pour retrouver mes vues ?

     

    merci.

    mardi 14 octobre 2008 15:38

Réponses

  • Hello,

     

    Merci bien.

    Effectivement c'était du au fait que mes affichages étaient devenus cachés.

    Par contre la modif dans Sharepoint Designer ne fonctionne pas. En effet cela rend bien l'affichage visible mais la page est cassée.

    J'ai donc écrit un programme console permettant de balayer les listes et leurs affichages pour changer cette propriétée en fonction du chois de l'utilisateur.

     

    Exemple d'execution:

    C:\Development\CSDN\WssListHideToggle\WssListHideToggle\bin\Release>WssListHideT
    oggle.exe http://wmoss/Test
    Sharepoint list hidden flag toggle
    (C) 2008 Archimed/Neolage
    Should process list "Actions" (y/n) ? n
    Should process list "Dossiers" (y/n) ? y
    view "Tous les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? c
    view "Mode Explorateur" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Fusionner les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Recréer un lien entre ces documents" is hidden. Should (k)eep ou (c)hange
    (k/c) ? k
    view "Clos" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Récents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "<unknown>" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    Should process list "Galerie de pages maîtres" (y/n) ? n
    Should process list "Historique des flux de travail" (y/n) ? n
    Should process list "Tâches" (y/n) ? n

     

    Code :

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;

    namespace WssListHideToggle
    {
        /// <summary>
        /// Entrée de l'exe
        /// </summary>
        class Program
        {
            /// <summary>
            /// Codes de sortie
            /// </summary>
            private enum ExitCode
            {
                None=0,
                Unknown=1,
                NotEnoughtArgument=2,
                OneQuote=3,
                CantOpenSite=4
            }

            /// <summary>
            /// Entrée de l'application console
            /// </summary>
            /// <param name="args">Arguments passés sur la ligne de commande</param>
            static void Main(string[] args)
            {
                // Annonce
                Console.ForegroundColor=ConsoleColor.White;
                Console.WriteLine("Sharepoint list hidden flag toggle");
                Console.ForegroundColor=ConsoleColor.Gray;

                // Vérification des arguments
                if (args.Length < 1)
                    Error("Not enought argument", true,true, ExitCode.NotEnoughtArgument);
                // On a un seul argument mais qui peut avoir était saisie avec des espaces => on concatène tout
                string url = string.Join(" ", args);
                // On supprime les éventuelles quotes
                if (url[0] == '"' && url[url.Length - 1] == '"')
                    url = url.Substring(0, url.Length - 2);
                // Il peut y avoir une erreur de saisie : une seule guillemet
                if (url[0] == '"' || url[url.Length - 1] == '"')
                    Error("You have specified only one '\"'", true, true, ExitCode.OneQuote);

                // Connexion au site
                SPSite site = null;
                SPWeb web = null;
                if(!Connect(url,out site,out web))
                    Error(string.Format("Can't open site {0}", url), false, true, ExitCode.CantOpenSite);

               
                using (site)
                {
                    using (web)
                    {
                        try
                        {
                            SPListCollection lists = web.Lists;
                            // Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
                            SPList[] listArray = new SPList[lists.Count];
                            for (int i = 0; i < lists.Count; i++)
                                listArrayIdea = listsIdea;

                            foreach (SPList list in listArray)
                            {
                                // lecture du nom de la liste
                                string listTitle=null;
                                try { listTitle=list.Title; } catch { listTitle="<unknown>"; }
                                if (string.IsNullOrEmpty(listTitle)) listTitle = "<unknown>";

                                // traitement de la liste
                                try
                                {
                                    if (isProcessList(listTitle)) ProcessList(list);
                                }
                                catch(Exception ex)
                                {
                                    Error(string.Format("Error processing list \"{0}\" : {1}",listTitle,ex.Message),false,false,ExitCode.None);
                                }
                            }
                        }
                        catch(Exception ex)
                        {
                            Error(string.Format("Unknown error : {0}", ex.Message), false, true, ExitCode.Unknown);
                        }                   
                    }
                }
            }

            /// <summary>
            /// Traitement de la liste
            /// </summary>
            /// <param name="list">Liste a traiter</param>
            private static void ProcessList(SPList list)
            {
                SPViewCollection views=list.Views;
                // Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
                SPView[] viewArray = new SPView[views.Count];
                for (int i = 0; i < views.Count; i++)
                    viewArrayIdea = viewsIdea;

                // Ballayage du tableau
                foreach (SPView view in viewArray)
                {
                    // lecture du nom de la vue
                    string viewTitle = null;
                    try { viewTitle = view.Title; }
                    catch { viewTitle = "<unknown>"; }
                    if (string.IsNullOrEmpty(viewTitle)) viewTitle = "<unknown>";

                    // traitement de la vue
                    try
                    {
                        ProcessView(viewTitle,view);
                    }
                    catch(Exception ex)
                    {
                        Error(string.Format("Error processing view \"{0}\" : {1}", viewTitle,ex.Message), false, false, ExitCode.None);
                    }
                }
            }

            /// <summary>
            /// Traite une vue
            /// </summary>
            /// <param name="viewTitle">Titre de la vue</param>
            /// <param name="view">Vue</param>
            private static void ProcessView(string viewTitle,SPView view)
            {
                bool isHidden = view.Hidden;
                ConsoleKeyInfo key;
                do
                {
                    Console.Write(string.Format("view \"{0}\" is {1}. Should (k)eep ou (c)hange (k/c) ? ", viewTitle,  isHidden?"hidden":"visible"));
                    key = Console.ReadKey();
                } while (key.KeyChar != 'k' && key.KeyChar != 'c');
                Console.WriteLine("");
                if (key.KeyChar == 'c')
                {
                    view.Hidden = !isHidden;
                    view.Update();
                }
            }

            /// <summary>
            /// Doit-on traiter la liste ?
            /// </summary>
            /// <param name="listTitle">Liste que l'on doit géré</param>
            /// <returns>Vrais si elle est a traiter</returns>
            private static bool isProcessList(string listTitle)
            {
                ConsoleKeyInfo key;
                Console.ForegroundColor = ConsoleColor.White;
                do
                {
                    Console.Write(string.Format("Should process list \"{0}\" (y/n) ? ", listTitle));
                    key = Console.ReadKey();
                } while (key.KeyChar != 'y' && key.KeyChar != 'n');
                Console.WriteLine("");
                Console.ForegroundColor = ConsoleColor.Gray;
                return key.KeyChar == 'y';
            }

            /// <summary>
            /// Connexion au site Sharepoint
            /// </summary>
            /// <param name="url">url du site</param>
            /// <param name="site">Site retourné</param>
            /// <param name="web">Web retourné</param>
            /// <returns></returns>
            private static bool Connect(string url, out SPSite site, out SPWeb web)
            {
                site = null;
                web = null;
                try
                {
                    site = new SPSite(url);
                    web = site.OpenWeb();
                }
                catch
                {
                    try { if (web != null) web.Dispose(); } catch {}
                    try { if (site != null) site.Dispose(); } catch { }
                    return false;
                }
                return true;
            }

            /// <summary>
            /// Affiche une erreur
            /// </summary>
            /// <param name="msg">Message d'erreur</param>
            /// <param name="syntax">Rappel la syntaxe ?</param>
            /// <param name="quit">Quitte l'application</param>
            /// <param name="exitCode">Code de sortie</param>
            private static void Error(string msg, bool syntax, bool quit, ExitCode exitCode)
            {
                // Message
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write(msg);
                Console.ForegroundColor = ConsoleColor.Gray;

                // Rappel de la syntaxe
                if (syntax)
                    Console.WriteLine(
                        string.Format("{0} SiteUrl\n\tSiteUrl : Site url",
                        typeof(Program).Assembly.CodeBase)
                    );

                // Sortie
                if(quit) Environment.Exit((int)exitCode);
            }
        }
    }

     

    vendredi 5 décembre 2008 10:29

Toutes les réponses

  • Y'a une astuce un peu "barbare" pour remettre l'affichage des vues

     

    Dans le code de génération de la webpart (depuis SPD, quand tu sélectionnes la webpart depuis la vue design, du code est sélectionné dans la partie code), tu trouveras une balise de ce type :

     

    ....

     

    à l'intérieur de cette balise, pas très loin de là, tu trouveras un attribut qui dans ton cas sera :

    Code Snippet

    DefaultView=""

     

     

    Il faut mettre à la place :

    Code Snippet
    DefaultView="TRUE"

     

     

    Puis un autre attribut :

    Code Snippet

    DisplayName=&quot;All Documents&quot;

     

     

    Je ne me rappelle plus si tu auras l'indication "All Documents", mais ici, tu mets le nom de la vue par défaut.

    Avec ces deux petites manip, tu devrais pouvoir t'en sortir (de mémoire...).

     

    Merci de me dire si c'est ok ou non...

    vendredi 17 octobre 2008 06:32
  • Bonjour,

     

    J'ai éditer la page AllItems.aspx et j'ai effectivement trouver ces informations ... mais déjà remplies :

     

    Code Snippet

     

    <ListViewXml xmlns="http://schemas.microsoft.com/WebPart/v2/ListView">&lt;View Name="{79191121-BBCF-4991-91D4-D37888DEEDE2}" DefaultView="TRUE" MobileView="TRUE" MobileDefaultView="TRUE" Type="HTML" Hidden="TRUE" DisplayName="Tous les documents" Url="/Test/Dossiers/Forms/AllItems.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/images/dlicon.png"&gt;&lt;ViewFields&gt;&lt;FieldRef Name="DocIcon"/&gt;&lt ...

     

     

    En fait il m'affiche correctement cette page a part que outre "Tous les documents", la liste des vues est vide.

    Mais surtout lors de l'edition de la bibliothèque _layouts/listedit.aspx, il n'indique aucune vue (il y en a plusieurs en réalité).

     

    Cela me pose problème pour le cas d'utilisation suivant : Quand on affiche les propriétés d'un dossier, son nom est sous forme de lien. C'est une url de type REST (site/bibliothèque/dossier) qui est normalement transformé par sharepoint pour afficher le contenu du dossier dans la vue par défaut (site/bibliotheque/Forms/AllItems.aspx?RootFilder=...) hors comme il ne voit plus de vue ... il ne trasforme pas et ... 404

     

    Snif.
    jeudi 23 octobre 2008 15:41
  • Bonjour,

     

    il faut aussi que tu mette le champ hidden a false. hidden = cacher en francais.

    sharepoint adore mettre ce champs partout

     

    j'espère que ca a corriger un de tes bug

     

    mercredi 5 novembre 2008 15:34
  • Hello,

     

    Merci bien.

    Effectivement c'était du au fait que mes affichages étaient devenus cachés.

    Par contre la modif dans Sharepoint Designer ne fonctionne pas. En effet cela rend bien l'affichage visible mais la page est cassée.

    J'ai donc écrit un programme console permettant de balayer les listes et leurs affichages pour changer cette propriétée en fonction du chois de l'utilisateur.

     

    Exemple d'execution:

    C:\Development\CSDN\WssListHideToggle\WssListHideToggle\bin\Release>WssListHideT
    oggle.exe http://wmoss/Test
    Sharepoint list hidden flag toggle
    (C) 2008 Archimed/Neolage
    Should process list "Actions" (y/n) ? n
    Should process list "Dossiers" (y/n) ? y
    view "Tous les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? c
    view "Mode Explorateur" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Fusionner les documents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Recréer un lien entre ces documents" is hidden. Should (k)eep ou (c)hange
    (k/c) ? k
    view "Clos" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "Récents" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    view "<unknown>" is hidden. Should (k)eep ou (c)hange (k/c) ? k
    Should process list "Galerie de pages maîtres" (y/n) ? n
    Should process list "Historique des flux de travail" (y/n) ? n
    Should process list "Tâches" (y/n) ? n

     

    Code :

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;

    namespace WssListHideToggle
    {
        /// <summary>
        /// Entrée de l'exe
        /// </summary>
        class Program
        {
            /// <summary>
            /// Codes de sortie
            /// </summary>
            private enum ExitCode
            {
                None=0,
                Unknown=1,
                NotEnoughtArgument=2,
                OneQuote=3,
                CantOpenSite=4
            }

            /// <summary>
            /// Entrée de l'application console
            /// </summary>
            /// <param name="args">Arguments passés sur la ligne de commande</param>
            static void Main(string[] args)
            {
                // Annonce
                Console.ForegroundColor=ConsoleColor.White;
                Console.WriteLine("Sharepoint list hidden flag toggle");
                Console.ForegroundColor=ConsoleColor.Gray;

                // Vérification des arguments
                if (args.Length < 1)
                    Error("Not enought argument", true,true, ExitCode.NotEnoughtArgument);
                // On a un seul argument mais qui peut avoir était saisie avec des espaces => on concatène tout
                string url = string.Join(" ", args);
                // On supprime les éventuelles quotes
                if (url[0] == '"' && url[url.Length - 1] == '"')
                    url = url.Substring(0, url.Length - 2);
                // Il peut y avoir une erreur de saisie : une seule guillemet
                if (url[0] == '"' || url[url.Length - 1] == '"')
                    Error("You have specified only one '\"'", true, true, ExitCode.OneQuote);

                // Connexion au site
                SPSite site = null;
                SPWeb web = null;
                if(!Connect(url,out site,out web))
                    Error(string.Format("Can't open site {0}", url), false, true, ExitCode.CantOpenSite);

               
                using (site)
                {
                    using (web)
                    {
                        try
                        {
                            SPListCollection lists = web.Lists;
                            // Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
                            SPList[] listArray = new SPList[lists.Count];
                            for (int i = 0; i < lists.Count; i++)
                                listArrayIdea = listsIdea;

                            foreach (SPList list in listArray)
                            {
                                // lecture du nom de la liste
                                string listTitle=null;
                                try { listTitle=list.Title; } catch { listTitle="<unknown>"; }
                                if (string.IsNullOrEmpty(listTitle)) listTitle = "<unknown>";

                                // traitement de la liste
                                try
                                {
                                    if (isProcessList(listTitle)) ProcessList(list);
                                }
                                catch(Exception ex)
                                {
                                    Error(string.Format("Error processing list \"{0}\" : {1}",listTitle,ex.Message),false,false,ExitCode.None);
                                }
                            }
                        }
                        catch(Exception ex)
                        {
                            Error(string.Format("Unknown error : {0}", ex.Message), false, true, ExitCode.Unknown);
                        }                   
                    }
                }
            }

            /// <summary>
            /// Traitement de la liste
            /// </summary>
            /// <param name="list">Liste a traiter</param>
            private static void ProcessList(SPList list)
            {
                SPViewCollection views=list.Views;
                // Copy dans un tableau pour pouvoir enumérer sans avoir d'erreur sur le Update d'une vue
                SPView[] viewArray = new SPView[views.Count];
                for (int i = 0; i < views.Count; i++)
                    viewArrayIdea = viewsIdea;

                // Ballayage du tableau
                foreach (SPView view in viewArray)
                {
                    // lecture du nom de la vue
                    string viewTitle = null;
                    try { viewTitle = view.Title; }
                    catch { viewTitle = "<unknown>"; }
                    if (string.IsNullOrEmpty(viewTitle)) viewTitle = "<unknown>";

                    // traitement de la vue
                    try
                    {
                        ProcessView(viewTitle,view);
                    }
                    catch(Exception ex)
                    {
                        Error(string.Format("Error processing view \"{0}\" : {1}", viewTitle,ex.Message), false, false, ExitCode.None);
                    }
                }
            }

            /// <summary>
            /// Traite une vue
            /// </summary>
            /// <param name="viewTitle">Titre de la vue</param>
            /// <param name="view">Vue</param>
            private static void ProcessView(string viewTitle,SPView view)
            {
                bool isHidden = view.Hidden;
                ConsoleKeyInfo key;
                do
                {
                    Console.Write(string.Format("view \"{0}\" is {1}. Should (k)eep ou (c)hange (k/c) ? ", viewTitle,  isHidden?"hidden":"visible"));
                    key = Console.ReadKey();
                } while (key.KeyChar != 'k' && key.KeyChar != 'c');
                Console.WriteLine("");
                if (key.KeyChar == 'c')
                {
                    view.Hidden = !isHidden;
                    view.Update();
                }
            }

            /// <summary>
            /// Doit-on traiter la liste ?
            /// </summary>
            /// <param name="listTitle">Liste que l'on doit géré</param>
            /// <returns>Vrais si elle est a traiter</returns>
            private static bool isProcessList(string listTitle)
            {
                ConsoleKeyInfo key;
                Console.ForegroundColor = ConsoleColor.White;
                do
                {
                    Console.Write(string.Format("Should process list \"{0}\" (y/n) ? ", listTitle));
                    key = Console.ReadKey();
                } while (key.KeyChar != 'y' && key.KeyChar != 'n');
                Console.WriteLine("");
                Console.ForegroundColor = ConsoleColor.Gray;
                return key.KeyChar == 'y';
            }

            /// <summary>
            /// Connexion au site Sharepoint
            /// </summary>
            /// <param name="url">url du site</param>
            /// <param name="site">Site retourné</param>
            /// <param name="web">Web retourné</param>
            /// <returns></returns>
            private static bool Connect(string url, out SPSite site, out SPWeb web)
            {
                site = null;
                web = null;
                try
                {
                    site = new SPSite(url);
                    web = site.OpenWeb();
                }
                catch
                {
                    try { if (web != null) web.Dispose(); } catch {}
                    try { if (site != null) site.Dispose(); } catch { }
                    return false;
                }
                return true;
            }

            /// <summary>
            /// Affiche une erreur
            /// </summary>
            /// <param name="msg">Message d'erreur</param>
            /// <param name="syntax">Rappel la syntaxe ?</param>
            /// <param name="quit">Quitte l'application</param>
            /// <param name="exitCode">Code de sortie</param>
            private static void Error(string msg, bool syntax, bool quit, ExitCode exitCode)
            {
                // Message
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write(msg);
                Console.ForegroundColor = ConsoleColor.Gray;

                // Rappel de la syntaxe
                if (syntax)
                    Console.WriteLine(
                        string.Format("{0} SiteUrl\n\tSiteUrl : Site url",
                        typeof(Program).Assembly.CodeBase)
                    );

                // Sortie
                if(quit) Environment.Exit((int)exitCode);
            }
        }
    }

     

    vendredi 5 décembre 2008 10:29