Archives Catégorie: jQuery et SharePoint

Astuce rapide: Ajout de jQuery à MOSS Publishing Pages

Lorsque l'amélioration des pages de publication de mousse à l'aide de jQuery, J'ai frappé le ralentisseur suivant:

Erreur de serveur dans ' /’ Application.


Erreur de l'analyseur

Description: Une erreur s'est produite pendant l'analyse d'une ressource nécessaire à cette demande de service. Veuillez revoir les détails de l'erreur suivante analyse spécifique et modifier votre fichier de source de manière appropriée.

Message d'erreur analyseur: Seulement les contrôles de contenu sont autorisés directement dans une page de contenu qui contient des contrôles de contenu.

Erreur de la source:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

Fichier source: /_catalogs/masterpage/KCC_FacultyMember.aspx    Ligne: 12


Informations de version: Microsoft.NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927

C'est assez facile à fixer (h/t à mon collègue, Uday Ethirajulu).  Veillez à ce que le code jQuery vit à l'intérieur de la « PlaceHolderAdditionalPageHead », comme le montre:

<ASP:Contenu ContentPlaceholderID = PlaceHolderAdditionalPageHead »" runat = « server »>

<script

    type = "text/javascript"

    SRC="/jQuery/jQuery-1.4.min.js »>

</script>

<script type = « text/javascript »>

  $(document).prêt(fonction() {

   // JQuery brillant stuff va ici.

   });

</script>

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

À la gloire de jQuery amélioré-que-vous-Type de recherche (par Jan Tielens)

Je travaille sur une démo BPOS (peu de temps à être disponibles sur Microsoft du site) et je voulais ajouter un peu piquant. J'ai connu au sujet De Jan Tielen les efforts pour un certain temps et j'ai pensé que ce serait une grande technique pour ajouter à la démo, J'ai donc fait. Vous pouvez lire à ce sujet ici: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx. Il est si simple à utiliser, il devrait probablement être un crime (et c'est peut-être quelque part).

J'ajoute juste deux points à ce qu'il a déjà créé / écrit sur:

  1. Cela ne fait, En fait, travailler dans un BPOS (SharePoint en ligne) environnement.
  2. Pour le faire fonctionner sans un préfixe de message popup gênant la référence à la bibliothèque jquery par https au lieu de http, comme dans:
<script type ="text/javascript" SRC =« https://Ajax.googleapis.com/Ajax/libs/jQuery/1.3.2/jQuery.min.js"></script>

Jan a fait remarquer que vous devrez probablement transférer la bibliothèque elle-même vers votre site. Se sentant un peu paresseux aujourd'hui, J'ai décidé de bloguer à ce sujet à la place 🙂

</fin>

Il s'agit d'un autre poste dans mon série en cours Comment utiliser jQuery avec SharePoint.
Si vous souhaitez en savoir plus sur jQuery, Je recommande fortement: jQuery in Action par ours Bibeault et Yehuda Katz.

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Tags Technorati:

Sécurisation des vues de bibliothèque de documents SharePoint liste semble (en quelque sorte) Possible avec jQuery

Il s'agit d'un autre poste dans mon série en cours Comment utiliser jQuery avec SharePoint.
Si vous souhaitez en savoir plus sur jQuery, Je recommande fortement: jQuery in Action par ours Bibeault et Yehuda Katz.

Une des premières choses que je pensais, une fois que j'ai commencé à jouer avec jQuery, était de savoir si nous pourrions utiliser pour garantir un affichage SharePoint. La réponse est « non » (ou au moins, Je ne suis pas réclamer que c'est possible). Cependant, Il est certainement possible de rendre difficile pour les gens de voir une vue particulière.

J'ai commencé avec mon environnement sandbox lorsque vous travaillez sur ce. J'ai écrit sur cet environnement ici: Facile et rapide: Créer votre propre jQuery Sandbox pour SharePoint.

Pour « obtenir » un point de vue, Suivez ces étapes:

  1. Créer une vue que vous souhaitez sécuriser. J'ai fait cela et l'a appelé « Vue sécurisé ».

    C'est à quoi il ressemble quand ce n'est pas « garanti »:

    image

  2. Ajouter un composant WebPart éditeur de contenu à la page de la vue en utilisant l'astuce décrite dans l'article de la sablière (i.e. ajouter « PageView = Shared&ToolPaneView = 2 » à l'URL).
  3. Comprendre votre _spUserId de SharePoint en suivant ces étapes fous, croire ou pas:
    1. Ouvrez une session dans votre environnement SharePoint.
    2. Dans le champ d'adresse du navigateur web, type: « javascript:alerte(_spUserId »).
    3. Noter le résultat (C'est le « 13 » dans mon cas).

      image

  4. Ajoutez le code javascript suivant pour votre CEWP en mode code:

    <script type ="text/javascript"
        SRC =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(fonction() {
    
        alerte(_spUserId);
    
        var theSecuredView = $(« iframe[FilterLink * = 20View % garanti]');
    
        Si ((theSecuredView.length > 0) && (_spUserId == 13))
          $(« iframe[FilterLink * = 20View % garanti]').parent().parent().parent().html("<TR bgcolor = rouge><TD>Pas de vue pour vous!</TD></TR>");
      });
    
    </script>
    

J'ai inclus cette alerte(_spUserId) ligne là-dedans pour démontrer comment ce n'est pas vraiment une « sécurisation » une vue, mais simplement rend plus difficile à voir. Plus sur cela dans un instant.

Essentiellement, jQuery est à la recherche d'un iFrame sur la page qui possède un attribut qui contient « Secured % 20View » de sa valeur. Une fois qu'il la trouve, nous vérifions pour voir si l'utilisateur actuel est « 13 ». S'il est, Nous marchons vers le haut le DOM pour un <TR> Tag (qui a découvert par affichage source et traçage il) puis en remplaçant cette balise TR avec mon message. Je ne sais vraiment pas comment robuste c'est (Je suis très suspecte, En fait), mais cela a fonctionné dans mon bac à sable. Si j'ai trouver une meilleure façon, Je vais de blog à ce sujet. C'est le résultat:

image

Je clique sur le bouton OK et les données sont remplacées par un grand message rouge:

image

Comme vous pouvez le dire, la façon dont j'ai implémenter cette solution de « sécurité » est de permettre le composant WebPart restituer elle-même. Une fois terminé, J'écrase son contenu avec « sans moi pour vous!« message.

Malgré le fait qu'il n'est pas vraiment un « garanti » « avis, Il est potentiellement utile et avec un travail intelligent, Il peut éventuellement être sécurisable dans un sens plus formel. La question fondamentale est que le client obtient toutes les données, puis, seulement après qu'il obtient les données, Il anéantit. Si le client ne reçoit pas les données, un utilisateur habile peut empêcher l'exécution du tout de la jQuery et voir ce qu'il souhaite voir.

Il y a autres inconvénients. Cette approche de « sécurité » est basée sur un _spUserId. Nous souhaitons à vraiment sécurisé basé sur le modèle complet de sécurité SharePoint, ou au moins de nom d'utilisateur. Cela devient de plus en plus difficile, mais je vois des trucs bien écrit sur ce sujet, Si j'ai bon espoir, qu'il y a une bonne réponse à ce problème.

La liste des points de vue se devrait être réduite., Si possible. Je n'ai pas essayé de comprendre cela. Je suppose que c'est possible, mais n'est pas vraiment résoudre le problème de sécurité fondamentales, parce que quelqu'un pourrait encore juste tapez l'URL de la vue qu'ils veulent (s'ils savaient il). Cependant, parage logique. C'est une caractéristique de la facilité d'utilisation et il contribue à obscurcir les choses. Si un utilisateur final ne sait pas que l'évènement existe, ils ne sera pas probablement essayer de l'utiliser. Parfois, C'est assez bon.

Avec de la chance, J'aurai plus d'écrire sur ce sujet au fil du temps.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Facile et rapide: Le meilleur moyen d'utiliser jQuery pour masquer un champ de texte sur un formulaire SharePoint

Il s'agit d'un autre poste dans mon série en cours Comment utiliser jQuery avec SharePoint.
Si vous souhaitez en savoir plus sur jQuery, Je recommande fortement: jQuery in Action par ours Bibeault et Yehuda Katz.

Précédemment, J'ai écrit sur l'utilisation de jQuery pour localiser et masquer un champ de texte sur un formulaire. Je n'aimais pas l'approche spécifique (J'ai le chaînage de parents – c'est tout simplement n'est pas fait ces jours, au moins dans les familles de qualité).

Quand j'ai commencé à penser à elle, Je savais que j'avais besoin de trouver un <TR> à qui je pourrais invoquer la peau() méthode. Mon effort au début pour trouver le bon <TR> a quelque chose comme ça:

$(' tr:a(entrée[titre = Me cacher!])');

Le problème est qu'il trouverait tous <TR> tag qui m'avait une relation de parent à la peau! champ, même si cacher Me! est imbriqué dans plusieurs niveaux <TR>s. Il s'avère que sur mon formulaire de bac à sable, estime que l'expression 9 différents TR qui ont cache Me! comme un enfant quelque part dans son arborescence DOM. J'ai réalisé que je pouvais marcher vers le haut l'arbre de la zone de saisie elle-même, Voilà comment j'ai fini par les parents de maltraiter, mais il n'a pas très bien avec moi.

J'ai donné une pensée à cela et une des choses que j'ai lu enfin fait sens: Je pourrais pas() méthode pour couper des <TR>s que je ne veux pas dans mon jeu de fractionnement. Cela m'a conduit à cette:

$(' tr:a(entrée[titre = Me cacher!])').pas(' tr:a(TR)').cacher();

Le premier bit détecte tous les <TR> balises qui ont la peau Me! champ dans leur propre hiérarchie. Ensuite, elle supprime toute <TR> qui ont aussi un enfant <TR>. Cela nous laisse avec une seule <TR> qui:

1) N'a pas <TR> enregistrements enfants

2) Il a le champ de saisie comme enfant.

Nous pouvons ensuite appliquer la peau() méthode de la valeur et nous aurons fini.

Je suis toujours un peu nerveux à ce sujet, mais pas aussi nerveux que les parents de chaînage.

Je ne sais pas si c'est conseillé ou pas. Il peut y avoir un moyen plus approprié d'identifier simplement le <TR> que nous nous soucions sous une forme de SharePoint. Si vous savez, Veuillez poster un commentaire.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Facile et rapide: Utiliser jQuery pour masquer un champ de texte sur un formulaire SharePoint

Il s'agit d'un autre poste dans mon série en cours Comment utiliser jQuery avec SharePoint.
Si vous souhaitez en savoir plus sur jQuery, Je recommande fortement: jQuery in Action par ours Bibeault et Yehuda Katz.

MISE À JOUR (déjà!): Je pense une meilleure façon de localiser les <TR> balise je veux cacher et a écrit à ce sujet ici. Vous pouvez toujours trouver cet article intéressant en tout cas donc je suis leavnig vers le haut.

Je veux masquer un champ texte, « Me cacher!« comme le montre:

image

Le jQuery suivant fait le truc pour moi:

<script type ="text/javascript">

  $(fonction() {


    $(« d'entrée[titre = Me cacher!]').parent().parent().parent().cacher();

  });

</script>

Le code dit, « find me entrée tous les champs dont le titre = Me cacher!. Puis, sa mère et puis sur suivant parent et la * prochaine * parent (ouf!) et invoquer la peau() méthode sur cette chose, quel qu'il arrive à être.

J'ai pensé que cette structure parent en visualisant le code HTML du formulaire que SharePoint créé comme indiqué:

<TR>
    <TD NoWrap= « true" valign= « top" Largeur= « 190px" classe= « ms-formlabel »>
        <H3 classe= « ms-standardheader »>
            <nobr>Me cacher!</nobr>
        </H3>
    </TD>

    <TD valign= « top" classe= « ms-formbody" Largeur= « 400px »>
        <!-- FieldName = « Me cacher!"
                 FieldInternalName = Hide_x0020_Me_x0021_ »"
                 FieldType = « SPFieldText"
        -->
        <travée dir= « aucun »>
            <entrée
                nom= « ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04 ctl00$ ctl00$ $TextField"
                type= "texte"
                MaxLength= "255"
                ID= ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField""
                titre= « Me cacher!"
                classe= « ms-long" />
                <br>
        </travée>


    </TD>
</TR>

Cette photo montre le même, mais marqué avec les parents:

image

Le premier parent (1) est une balise span. Parent de travée (2) est une balise TD et puis finalement nous arrivons à la véritable mère je veux cacher (3) qui est la balise TR elle-même.

Il s'agit d'une approche assez terrible, je pense que parce qu'il est extrêmement dépendant de la structure très particulière de ce formulaire. Lorsque SharePoint 2010 sort, Cette structure entière pourrait changer et rompre cette approche. Ce que je veux vraiment faire, c'est métier un sélecteur jQuery qui va dans le sens de « trouvez-moi tous les TR (et seuls les balises TR) qui ont quelque part dans les éléments de leurs enfant un champ d'entrée dont le titre = Me cacher!”. J'ai à partir du bas et remonter. En supposant que j'ai trouver ceci, Je posterai une mise à jour « rapide et facile ' post.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Facile et rapide: Créer votre propre jQuery Sandbox pour SharePoint

Il s'agit d'un autre poste dans mon série en cours Comment utiliser jQuery avec SharePoint.
Si vous souhaitez en savoir plus sur jQuery, Je recommande fortement: jQuery in Action par ours Bibeault et Yehuda Katz.

Pour commencer avec jQuery dans SharePoint est étonnamment facile (Pour moi). (J'ai de sérieuses questions sur une approche de « pratiques exemplaires » pour déployer ces choses à la production, mais c'est pour un autre jour). J'ai juste commencé à jouer avec cette technologie et à cette fin, J'ai créé un environnement sandbox à utiliser. Si vous cherchez à démarrer avec jQuery, Vous trouverez cette approche utile.

1. Créer un Site vierge

Créer un site vide quelque part dans votre site et appelez-la savants comme « jQuery Sandbox ».

2. Télécharger jQuery

Vous pouvez télécharger ici la bibliothèque javascript jQuery: http://docs.jquery.com/Downloading_jQuery

Pour enregistrer sur votre bureau.

J'ai utilisé la version « minified ».

3. Créer une bibliothèque de documents SharePoint

Dans votre site de la sablière, créer une bibliothèque de documents.

4. Télécharger la bibliothèque de jQuery dans SharePoint

Accéder à la doc library, que vous venez de créer et de charger la bibliothèque jQuery.

5. Créer une liste de SharePoint personnalisée

J'ai commencé avec une liste personnalisée, parce que je veux muck sur avec les formulaires SharePoint standard. Vous pouvez également créer une page dans une bibliothèque de pages ou des pages de composants WebPart et probablement beaucoup d'autres endroits.

Ajouter des colonnes à la liste personnalisée afin que vous ayez quelque chose à exécuter jQuery contre. Mes objectifs initiaux étaient à:

  1. Masquer un champ.
  2. Assignez une valeur à un champ.

Avec cet objectif à l'esprit, J'ai ajouté deux champs texte. Au fil du temps, Je vais jouer avec des liens, images, recherches, etc..

6. Modifier la Page WebPart NewForm.aspx et ajouter un composant WebPart éditeur de contenu

C'est un peu noir magic-ish , car il s'agit d'un nouveau concept pour moi. J'ai appris sur ce à partir de Paul Grenier, SharePoint jQuery Superstar, sur son site CodePlex du projet: http://spff.codeplex.com/.

Procédez comme suit pour ajouter un CEWP à la même page qui montre NewForm.aspx pour n'importe quelle liste personnalisée:

  1. Accéder à la liste personnalisée, puis cliquez sur nouveau.
  2. Ajouter ce qui suit à l'URL: Page vue = partagée&ToolPaneView = 2

Qui va transformer votre forme d'entrée de données vanille ennuyeux de quelque chose comme ça:

image

Pour cela:

image

Ajoutez le composant WebPart éditeur de contenu à la page.

7. Écrire votre premier jQuery Code

Ouvrir cette CEWP en mode code et ajoutez ce qui suit:

image

Voici le code réel si vous voulez copier/coller:

<script type ="text/javascript"
    SRC =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
</script>

<script type ="text/javascript">
  $(fonction() {

    $(« #resultsID »).html(« Il existe » + $(« a »).taille() + « un tags tags sur cette page. »);

  });
</script>

Résultat:
<div id =« resultsID »></Div>
/résultat

Notez que la première <script> balise fait référence à la bibliothèque jQuery réelles. Sans doute, ces choses changent avec le temps, donc vous voudrez vous assurer que vous un) Utilisez le nom correct et b) pointer vers la bibliothèque de documents SharePoint correcte.

Se prélasser dans la gloire

Si vous l'avez fait correctement, vous verrez un résultat semblable à la suivante:

image

Récapitulation

Ce n'est pas le seul moyen pour commencer, mais c'est rapide, simple et isolé de votre environnement SharePoint existant.

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin

Facile et rapide: Utiliser jQuery pour valeur de définir un champ de texte sur une forme de SharePoint

J'ai commencé à jouer avec jQuery hier. J'ai eu envie de le faire pendant une longue période, depuis Paul Grenier commence à écrire sa série sur jQuery pour les utilisateurs finaux à la vénérable www.endusersharepoint.com site Web. Que je l'utilise, Je souhaite ajouter qu'une série de « Rapide et facile » messages comme celui-ci. Ce billet décrit comment définir la valeur d'un champ texte connu pour tout ce que vous voulez.

Dans ce scénario, J'ai créé une liste personnalisée « nouveau » dont la forme ressemble comme illustré:

image

C'est le nouveau formulaire pour obtenir une liste personnalisée avec la colonne de titre par défaut et deux colonnes de la liste (pas de colonnes de site; Je ne pense pas qu'elle doit rendre toute différence).

L'objectif est d'attribuer une valeur arbitraire au champ, « DefaultMeFieldNoSpaces » (vous pouvez dire que je suis un peu lâche avec la chose « sans espaces », mais je le spice up à la fin de cet article).

Ce bit de jQuery a fonctionné pour moi:

<script type ="text/javascript">

  $(fonction() {

    $(« d'entrée[titre = DefaultMeFieldNoSpaces]').attr(
        {valeur: « Vous êtes dans un labyrinthe de passages en twisty, tous semblables. »});

  });

</script>

Comme je comprends ce bit de jQuery est dit, "Trouvez-moi une entrée tag dont le titre = DefaultMeFieldNoSpaces. Puis, Set toutes leurs valeurs à une phrase célèbre d'un vieux jeu. »

Puisqu'il ne sera un champ du formulaire avec un titre égal à « DefaultMeFieldNoSpaces » nous sommes assuré d'assigner une valeur à ce champ et aucun autre.

Qu'en est-il un champ dont le nom comporte des espaces qu'il? C'est presque pareil:

<script type ="text/javascript">

  $(fonction() {
     $(« d'entrée[titre = attribuer le domaine avec espace]').attr(
        {valeur: « Vous êtes dans un labyrinthe de passages en twisty, tous semblables. »});

  });

</script>

Je pense que c'est une approche assez sûre, ce qui signifie que nous devrions être capables de trouver le domaine que nous voulons et seul le champ nous voulons. Si vous regardez le HTML SharePoint nous donne, C'est le genre de désordre:

<entrée
nom= « ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04 ctl00$ ctl00$ $TextField"
type= "texte"
MaxLength= "255"
ID= ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField""
titre= DefaultMeFieldNoSpaces""
classe= « ms-long"
/>

« titre » se démarque comme un attribut reconnaissable et unique j'espère que pour nous aider à identifier la colonne spécifique à laquelle nous voulons affecter notre valeur arbitraire.

Il s'agit d'un concept fondamental. Définissant un champ d'une manière arbitraire comme ça ne va pas gagner à tout prix. Cependant, Si nous voulons faire plus intéressant stuff de niveau formulaire (que chacun d'entre nous veulent toujours faire, Bien sûr, juste après que nous terminer la vaisselle), comme modifier la valeur de « champ b » automatiquement basé sur la valeur de "champ un », Nous avons (JE) besoin d'apprendre ces choses.

Je pense que la meilleure chance d'obtenir une valeur réelle utile ici est via le titre, au moins pour les champs texte. Il peut y avoir une meilleure, approche plus fiable. Si je le trouve, Je vais mettre à jour ce post. Si vous connaissez une meilleure façon, Veuillez laisser un commentaire.</fin>

</fin>

S'abonner à mon blog.

Me suivre sur Twitter à http://www.twitter.com/pagalvin