分类存档: jQuery 和 SharePoint

小提示: JQuery 添加 MOSS 发布网页

提高使用 jQuery 的 MOSS publising 页面时, 我打了以下的绊脚石:

中的服务器错误 ' /’ 应用程序.


分析器错误

说明: 在此请求提供服务所需资源的分析过程中出现的错误. 请查看下面的特定分析错误的详细信息,并适当地修改您的源代码文件.

分析器错误消息: 内容控件只允许直接在内容页中包含的内容控件.

源错误:

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

源文件: /_catalogs/masterpage/KCC_FacultyMember.aspx    线: 12


版本信息: Microsoft.NET Framework 版本:2.0.50727.4927; ASP.NET 版本:2.0.50727.4927

它是容易解决 (我的同事 h/t, 乌代 Ethirajulu).  请确保"PlaceHolderAdditionalPageHead"内生活的 jQuery 的代码所示:

<asp:内容 ContentPlaceholderID ="PlaceHolderAdditionalPageHead" runat ="服务器">

<脚本

    类型 ="文本/javascript"

    "src="/jQuery/jquery-1.4.min.js>

</脚本>

<脚本类型 ="文本/javascript">

  $(文档).准备好了(功能() {

   // 这里是辉煌 jQuery 的东西.

   });

</脚本>

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

赞美的 jQuery 增强搜索---键入时 (由 Jan Tielens)

我的工作 BPOS 演示 (很快就可了微软的网站) 和我想要添加一个小的潇洒. 我已经知道了 Jan Tielen 努力为相当一段时间,我还以为是一个伟大的技术将添加到该演示, 所以我做了. 你可以在这里读到它: http://weblogs.asp.net/jan/archive/2009/07/02/sharepoint-search-as-you-type-with-jquery.aspx. 它是简单的使用它可能应该是犯罪 (也许是某个地方).

我将只是两个点添加到他已经创建 / 写了关于:

  1. 这没有, 事实上, BPOS 的工作 (SharePoint 在线) 环境.
  2. 要使其工作不令人讨厌的弹出消息前缀的情况下对 https 而不是 http 的 jquery 库的引用, 如在:
<脚本类型 ="文本/javascript" src ="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></脚本>

Jan 指出你可能应该移动图书馆本身到您的网站. 今天感觉有一点懒惰, I decided to blog about it instead 🙂

</结束>

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 标签:

确保 SharePoint 列表/文档库视图似乎 (排序的) JQuery 的可能

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

我想到的第一件事之一, 一次,我开始玩 jQuery, 是是否我们可以用它来确保 SharePoint 视图. 答案是"不" (或至少, 我并不认为它有可能). 不过, 很有可能要让人看见的特定视图的困难.

我的沙箱环境时这项工作的开始. 我写了关于此处的环境: 快速、 方便: 创建您自己的 jQuery 沙箱的 SharePoint.

以"安全"视图, 请按照这些步骤:

  1. 创建的视图如果想要确保. 我那样做了,称之为"担保视图".

    这是它的外观时它不"安全":

    image

  2. 将内容编辑器 web 部件添加到视图的页面使用沙盒文章中介绍的技巧 (e 小节. 添加"浏览量 = 共享&ToolPaneView = 2"的 url).
  3. 找出您的 SharePoint _spUserId 由以下这些疯狂的步骤, 信不信:
    1. 登录到您的 SharePoint 环境.
    2. 在 web 浏览器的地址字段, 类型: "javascript:警报(_spUserId").
    3. 记录结果 (它是"13"在我的例子).

      image

  4. 将下面的 javascript 代码添加到您在代码视图中的 CEWP:

    <脚本类型 ="文本/javascript"
        src ="../../jQuery Library/jquery-1.3.2.min.js">
    </脚本>
    
    <脚本类型 ="文本/javascript">
      $(功能() {
    
        警报(_spUserId);
    
        var theSecuredView = $(iframe[FilterLink * = 担保的  view]');
    
        如果 ((theSecuredView.length > 0) && (_spUserId = = 13))
          $(iframe[FilterLink * = 担保的  view]').父().父().父().html("<背景色 tr = 红色><运输署>没有你的看法!</运输署></tr>");
      });
    
    </脚本>
    

我已经包括了该警报(_spUserId) 线在那里展示如何,这不是真的"确保安全"的视图, 但只使它更难见. 更多的时刻.

基本上, jQuery 寻找那些具有一个包含"安全 view"在其值的属性页面上的 iFrame. 一旦找到了,它, 我们检查当前用户是否是"13". 如果它是, 我们走到 DOM <TR> 标记 (其中通过查看源和跟踪它弄) 然后将该 TR 标签替换为我的邮件. 真的不知道这是多么健壮 (我很怀疑, 事实上), 但它在我的沙盒工作. 如果找到了更好的方式, 我会对它的博客. 这是结果:

image

单击确定按钮和数据替换为大红色消息:

image

您可以看出, 种方式让我实现这个"安全"解决方案是允许 web 部件来呈现自己. 它完成后, 我用我"没有查看您覆盖其内容!"消息.

尽管它不是真的"担保"视图, 它是可能有用,并与一些聪明的工作, 它最终可能安全更正式的意义上. 根本的问题是,客户端获取的所有数据,然后, 它获取的数据后才, 它擦干,再. 如果客户端获取数据, 聪明的用户可以看到她想要看到并阻止 jQuery 在所有运行.

有其他缺点. 这种"安全"的方法基于 _spUserId. 我们想要真正安全的基础完整的 SharePoint 安全模型, 或者说,至少按用户名称. 那变得越来越难, 但我看到一些好的东西写在这个问题上, 所以我希望有好的回答这一问题.

应修剪视图本身的列表, 如果可能的话. 我还没有尝试去弄明白. 是它可能, 但真的并不能解决根本的安全问题,因为有人可能还只是键入的 URL 的他们想要的视图 (如果他们知道它). 不过, 切边有道理. 这是一个良好的可用性功能,它有助于混淆的东西. 如果最终用户并不知道查看事件的存在, 他们可能不会尝试使用它. 有时, 这就是不够好.

幸运的是, 我会有更多要写上这一问题随着时间的推移.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速、 方便: 更好的使用 jQuery 的隐藏 SharePoint Form 上的文本字段

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

以前, 我写了关于如何使用 jQuery 来查找和隐藏窗体的文本字段. 我不在乎的具体办法 (我链接父母 — — 这是根本不做这些天, 至少在家庭的质量).

当我第一次开始去想它, 我知道我需要找到 <TR> 我可以调用隐藏() 方法. 我找到正确的早期努力 <TR> 是这样的事:

$(' tr:已(输入[标题 = 隐藏我!])');

问题是它会找到每个 <TR> 我有任何父关系对隐藏的标记! 字段, 即使把我藏! 是深的多层嵌套 <TR>的. 原来,在我的沙盒表单, 该表达式查找 9 不同 TR 的那些隐藏我! 作为一个孩子在其 DOM 树的某个地方. 我意识到,能回到上一棵树从输入字段本身走, 这就是我是如何结束了滥用父母, 但它没坐好与我.

给这样的一些思想和我读到最后的事情之一是合情合理: 我能用不() 要修剪出方法 <TR>我不想在我包装一套. 我被引到这:

$(' tr:已(输入[标题 = 隐藏我!])').不(' tr:已(tr)').隐藏();

查找所有的第一位 <TR> 我已隐藏的标记! 他们自己层次结构中任何位置的字段. 它然后带出任何 <TR> 这也有一个孩子 <TR>. 这使我们与单 <TR> ,:

1) 没有 <TR> 子记录

2) 没有输入的字段作为孩子.

然后,我们可以应用隐藏() 设置到结果的方法和我们讲完.

我仍然对此有点紧张, 但不是链接的父母一样紧张.

我不知道这不是是一种最佳做法. 可能更适当的方式确定的只是 <TR> 我们关心的 SharePoint 表单中. 如果你知道, 请张贴评论.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速、 方便: 使用 jQuery 隐藏 SharePoint Form 上的文本字段

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

更新 (已经!): 我没有想到找到更好的方法 <TR> 我想要隐藏的标记和 在这里写了关于它. 你可能仍然觉得这篇文章有趣反正所以我 leavnig 起来.

我想要隐藏的文本字段, "隐藏我!"如图所示:

image

下面的 jQuery 我的手法:

<脚本类型 ="文本/javascript">

  $(功能() {


    $(' 输入[标题 = 隐藏我!]').父().父().父().隐藏();

  });

</脚本>

该代码说, "查找我的所有输入字段的标题 = 隐藏我!. 然后, 获取其父,然后下一步父和 * 下一步 * 父 (吁!) 和调用隐藏() 关于那件事的方法, 不管它碰巧是.

我想出该父结构通过查看 HTML 的表单的 SharePoint 创建如图所示:

<TR>
    <TD nowrap="true" 底边对齐= 强"" 宽度="190px" ="ms-formlabel">
        <H3 ="ms-standardheader">
            <nobr>隐藏我!</nobr>
        </H3>
    </TD>

    <TD 底边对齐= 强"" ="ms formbody" 宽度="400px">
        <!-- FieldName ="隐藏我!"
                 FieldInternalName ="Hide_x0020_Me_x0021_"
                 FieldType ="SPFieldText"
        -->
        <大跨度 迪尔="无">
            <输入
                名称="ctl00$ m 元 g_bdb23c2c_fde7_495f_8676_69714a308d8e 元 ctl00 元 ctl04 元 ctl02 元 ctl00 元 ctl00 元 ctl04 元 ctl00$ ctl00$ TextField"
                类型="文本"
                maxlength="255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                标题="隐藏我!"
                ="ms 长" />
                <br>
        </大跨度>


    </TD>
</TR>

这张照片显示相同, 但标有父母:

image

第一个父 (1) 是 span 标记. 跨度的父 (2) 是 TD 标签,然后最后我们吃到真希望隐藏的父 (3) 这是 TR 标签本身.

这是一个相当可怕的方法,我认为因为它非常依赖于这种形式非常特定的结构. 当 SharePoint 2010 出来, 这整个的结构可以改变,打破这种方法. 我真的想做是一个 jQuery 选择器,是沿着线的工艺"找到我所有 TR 的 (和唯一 TR 标签) 有某处及其子元素输入的字段的标题 = 隐藏我!”. 我从底部开始,向上移动. 假设我把这弄, 我会发布更新"快速而方便地 ' 发布.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

del.icio.us 标记: ,

快速、 方便: 创建您自己的 jQuery 沙箱的 SharePoint

这是另一个帖子中的我 系列 有关如何使用 jQuery 使用 SharePoint.
如果您想要了解更多关于 jQuery, 我强烈推荐: jQuery 在行动 由熊 Bibeault 和耶胡达 · 卡茨.

在 SharePoint 中的 jQuery 入门是非常的简单 (对我来说). (我了关于"最佳做法"的方法来部署这些东西到生产的严重问题, 但这是另一天). 我刚开始玩这种技术,并为此目的, 我创建了一个沙箱环境使用. 如果你想要了解的 jQuery 入门, 您可能会发现这种方法很有用.

1. 创建一个空白网站

在您的网站中某处创建一个空白网站并调用它聪明"jQuery 沙箱"一样的东西.

2. 下载 jQuery

您可以从这里下载 jQuery javascript 库: http://docs.jquery.com/Downloading_jQuery

将到保存到您的桌面.

我一直在使用的"容易"版本.

3. 创建 SharePoint 文档库

沙盒站点中, 创建文档库.

4. 上载到 SharePoint 的 jQuery 库

访问您刚刚创建的文档库和上传的 jQuery 库.

5. 创建自定义 SharePoint 列表

因为我想要标准 SharePoint 形式再乱动,我已经开始自定义列表. 您还可以创建页面库中的网页或 web 部件页和可能很多其他的地方.

将一些列添加到自定义列表,所以,你有什么要运行 jQuery 反对. 我最初的目标是 ︰:

  1. 隐藏字段.
  2. 将一个值分配给字段.

考虑到该目标, 我添加了两个文本字段. 随着时间的推移, 我会玩的链接, 图像, 查找, 等.

6. 修改 NewForm.aspx Web 部件页并添加内容编辑器 Web 部件

这是有点黑 magic-ish , 它是一个新的概念,对我. 我第一次听说这从 保罗 · 翼, SharePoint jQuery 巨星, 在他的 CodePlex 项目站点: http://spff.codeplex.com/.

请按照以下步骤将 CEWP 添加到同一页面的任何自定义列表显示 NewForm.aspx:

  1. 访问自定义列表中,单击新建.
  2. 将下列附加到 URL: 浏览量 = 共享&ToolPaneView = 2

这将改变从这事你无聊香草数据输入窗体:

image

对此:

image

向页面添加内容编辑器 web 部件.

7. 写你的第一个 jQuery 代码

开放,CEWP 在代码视图中,添加以下内容:

image

这是实际的代码,如果您想要复制/粘贴:

<脚本类型 ="文本/javascript"
    src ="../../jQuery Library/jquery-1.3.2.min.js">
</脚本>

<脚本类型 ="文本/javascript">
  $(功能() {

    $('' #resultsID).html(' 有 ' + $('' a).大小() + ' tags 标签在此页上起 '。);

  });
</脚本>

结果:
<div id ='' resultsID></div>
/结果

请注意,第一次 <脚本> 标记引用实际的 jQuery 库. 大概是, 随着时间的推移改变这些东西, 所以你会想要确保你) 使用正确的名称和 b) 它指向正确的 SharePoint 文档库.

沐浴在荣耀

如果你能正确, 你会看到一个类似于以下内容的结果:

image

总结

这不是唯一的方法要开始, 但它是快速, 容易与您现有的 SharePoint 环境隔绝.

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

del.icio.us 标记: ,

快速、 方便: SharePoint 窗体上使用 jQuery 的设置文本字段的值

我开始玩, jQuery 昨天. 我一直想这样做很长时间, 自从 保罗 · 翼 开始写作 他的一系列 有关为最终用户在古老的 jQuery www.endusersharepoint.com web 站点. 当我使用它, 我希望能添加一系列的"快速和容易"职位像这样. 这篇文章描述了如何将一个已知的文本字段值设置为你想要的一切.

在此方案中, 我创建了自定义列表的"新"窗体外观如图所示:

image

这是默认的标题栏的自定义列表的新窗体和两个列表列 (没有为站点列; 我认为不应该有什么不同).

目标是要将任意值分配给字段, ""DefaultMeFieldNoSpaces (你可以告诉我有点"没有空格"事情与懦夫, 但我不要在本文末尾香料).

这位 jQuery 为我工作:

<脚本类型 ="文本/javascript">

  $(功能() {

    $(' 输入[标题 = DefaultMeFieldNoSpaces]').attr(
        {价值: ' 你是在曲折的迷宫般的通道, 人人都一样。});

  });

</脚本>

据我所知这位 jQuery 说, "我找任何输入标记的标题 = DefaultMeFieldNoSpaces. 然后, 将所有设置它们的值为一句名言从旧计算机游戏。"

由于只会有一个字段标题与窗体上等于"DefaultMeFieldNoSpaces"我们很放心地将一个值分配给该字段和没有其他.

什么有关字段名称中有空格? 它是几乎相同:

<脚本类型 ="文本/javascript">

  $(功能() {
     $(' 输入[标题 = 将字段分配与空间]').attr(
        {价值: ' 你是在曲折的迷宫般的通道, 人人都一样。});

  });

</脚本>

我认为这是一个相当安全的方法, 意思我们应该能够找到我们想要的字段和字段只我们想要. 如果你看看 HTML SharePoint 给我们, 它也有点乱:

<输入
名称="ctl00$ m 元 g_bdb23c2c_fde7_495f_8676_69714a308d8e 元 ctl00 元 ctl04 元 ctl02 元 ctl00 元 ctl00 元 ctl04 元 ctl00$ ctl00$ TextField"
类型="文本"
maxlength="255"
id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
标题="DefaultMeFieldNoSpaces"
="ms 长"
/>

可识别并希望唯一的属性,以帮助我们确定我们要向其分配我们任意值的特定列突出的"标题".

这是一个基本的概念. 以任意的方式,这样的字段设置不会赢得任何奖项. 不过, 如果我们想要做一些更有趣的窗体级别东西 (我们所有人总是想做, 答案是肯定的, 我们在完成洗碗后的权利), 像更改的值"字段 b"自动基于价值的"字段", 我们 (我) 需要学习这些东西.

我认为我们最好的机会,以获取真实有用的价值是通过标题, 至少对于文本字段. 可能有一个更好, 更可靠的方法. 如果我找到它, 我将更新这个帖子. 如果你知道一个更好的方式, 请留下评论。</结束>

</结束>

订阅我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin