SharePoint 店谈开放 Q&一个会话 (星期四) 08/13 @ 12:30 美国东部时间下午

Arcovis 将主办"SharePoint 店交谈"我们第二届在星期四 12:30 美国东部时间下午. 带着您的 SharePoint 问题,我们会尽我们所能用班卓琴笑话娱乐你, 聪明但无害奚落的我们的同事和也许甚至还可以回答一两个问题. 本周的"官方"面板包括你真正, 我 Arcovis 合作伙伴 (纳塔利娅 Voskresenskaya 和哈里 · 琼斯) 和劳拉 · 罗杰斯 (的 twitter & EndUserSharePoint 成名). 鲍勃 · 福克斯威胁要加入太, 但我也不会太认真. 最后一次, 我们有观众参与的小组成员和与会者之间的界限模糊大水平,预期同样会发生 (星期四).

此事件是由集成系统和服务集团共同主办 (www.issgroup.net).

请在此处注册: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=9xrzxfs9x34sb0sm

如果您有任何疑问,您希望我们采取, 只是拨入的呼叫,问它. 如果你想让我想一想吧, 向我们发送电子邮件 或在这里留言.

然后看到你!

</结束>

订阅我的博客.

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

预先存在的条件: 拯救 SharePoint 警报模板 (?)

我的一个客户共事前的承建商,打造出了企业小但有用 HR 应用程序. 那个承包商 SharePoint 设计器用于实现该解决方案的工作流部分. 它是有点乱. 例如, 有九个 SPD 工作流支持单个逻辑工作流进程和达五人可能在任何给定的时间,给出了正确的条件同时开枪. 调试不容易🙂

我的客户拥有一些仍未偿还的要求, 其中之一是通常提供更多的上下文时,系统会发送电子邮件通知 — — 无论是在电子邮件本身以及相关联的任务形式. 作为 SPD 工作流执行者知道, "从用户收集数据"SPD 行动实际上与自定义内容类型创建一个任务. 当我们使用该操作, 我们不去指定很多. 我们可以提示输入一些值 (例如:. "批准"或者"拒绝") 我们可以指定一个硬编码的值中的标题和说明. 这大概就是.

我的客户的要求是两个折叠:

  1. 当 SharePoint 将发送一封电子邮件任务分配, 在电子邮件正文中包含大量的有关任务的信息.
  2. 更重要的是, 到目前为止 – 当用户单击电子邮件中的任务链接, 任务窗体应该有审批者使其批准或拒绝的决定所需的所有信息. 马上, 经理需要点击项目链接本身向下钻取到底层的细节,没人喜欢,. 您必须单击电子邮件中. 然后您需要单击任务项目上有点晦涩的链接. 然后你可以看看基础数据 (InfoPath 在这种情况下形成). 然后你点击后面或后面, 等. 每个人都讨厌它.

我继承了这个有点凌乱的技术解决方案和我想要使变化中的最少侵入性的方式成为可能.

马上带的方法是创建一个自定义的警报模板. 您可以在这里阅读有关,. 像这样工作流程:

  • SPD 工作流运行.
  • 在一些点, 它将一个任务分配给一位经理.
  • SharePoint 系统会自动发出警报,对那位经理. 这不是一部分的 SPD 工作流,而是"什么 SharePoint?" (SharePoint 定时服务, 我相信).
  • 支持标准的警报过程调用自定义的警报处理程序 (以下魔法规则如上文所述参考文章).
  • 当我自定义的警报处理程序运行时,, 它生成一个漂亮的电子邮件. 更重要的是, 因为它有任务在手, 它还装饰满足业务需求所需的所有上下文信息的实际任务.
  • 用户获取电子邮件,它充满了有用的上下文信息.
  • 用户点击的任务链接和完成的任务本身充满了有用的上下文信息.
  • 大家都回家去吃西瓜和冰淇淋.

我做快速的 POC 和它的作品在实验室环境中. 我得到我的自定义电子邮件警报按预期. 我也要更新的任务说明和标题本身.

只有棘手, 到目前为止, 是为了避免在哪里警报更新该项目的情况, 触发另一个警报. 这并不让我担心.

到目前为止看起来有前途......

伟大的事情是,我不需要再乱动任何现有的 SPD 工作流. 他们是无所不知的警报处理程序是"IIZ 奔跑在 DA BAKGROUND, DECORATIN 洪德任务列表 WIF 莫瓦尔上下文”.

</结束>

订阅我的博客.

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

Technorati 标签: ,

活 SharePoint Q&一个会话 (星期四) 07/30/09 @ 12:30 PM EDT 结束 1:30美国东部时间下午

更新: 为此格式基本上是与几个 PPT 幻灯片设置舞台的电话会议. 我们有一个 SharePoint 环境台上以火起来,以防它来帮忙, 但这是主要人群大声谈论. 将有机会跟随了通过电子邮件.

回到我第一次过 SharePoint 会议, 只是一年多以前, 已经遭受多么出色活 Q&会话可以是. 会议主办方把放在一起排序问题特设专家组的"" (e 小节. 那些被挂着,不是怕在舞台上看起来有些愚蠢的人) 回答来自观众在房间里的任何问题. 当时在我的脑海, 并定期从那时起, 举办类似的会议,但却对线和电话线. 我不认为它可以作为人在 Q 一样好&一届会议, 但我认为它可能是很酷.

最后传开到它和下周四, 07/30, 我的公司 (Arcovis) 和业务合作伙伴, 集成的系统和服务组, 将会举办一个 Q&这样的 A. 我希望能经常做这些, 经常作为每周.

这首届会议可能会有点颠簸, 但这一概念是这:

  • 如果你有你想要在会议期间已回答的问题, 只是展示了并问.
  • 如果需要帮助,, 你可以通过电子邮件的问题提前.

我们计划花上半年的 Q&A 对通过电子邮件发送的问题,然后打开它到任何东西,任何人问在那之后.

在会议上周四发生, 07/30 起价 12:30 并在结束 1:30 美国东部时间下午.

如果你有兴趣, 请在这里注册: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=pxlsd9fpsm2md7h9

这个小组将包括我和其他 SharePoint 灯具. 你必须注册才能知道他们是谁🙂

如果你想要成为一个未来的 Q 这些灯具之一&一届会议, 让我知道.

</结束>

订阅我的博客.

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

Technorati 标签:

嵌入里面 InfoPath 表单开发人员备注

我仍然生活在 InfoPath 表单世界和我需要对窗体进行那些"小"的变化之一,, 不幸的是, 打破了我两个星期前通过与它的命名约定. 我心想, "人要看看这东西一年从现在,说, ' 保罗在想什么? 由朱庇特, 他的命名约定是没有意义!”

我意识到我能为此创造一个窗体上的视图,然后, 再来一次, 意识到,我可以一直一直这样的事情. 我添加到 InfoPath 表单这样的"开发人员备注"视图:

image

这样,用户不能访问该视图配置了该窗体,因此, 它只是与 InfoPath 客户端在设计视图中可见. 现在我感觉到有点接种反对一些未来的未知开发人员看着我的窗体和关于我的坏想法. 恍惚之间!

</结束>

订阅我的博客.

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

Technorati 标签:

管理 InfoPath 视图

我似乎通过 InfoPath 阶段去哪里, 带着蓝色, 我制作一大堆表格. 我的手指学习如何使用该工具好,然后经过九个月的干旱得再从头学习.

我现在正 InfoPath 相和我创造了很多意见与 InfoPath 表单. 你可能注意到的是 InfoPath 的一件事 2007 客户端显示视图按字母顺序排列. 这是一个真正的滋扰几次. 这些天我最好的技术是将视图名称号码开头,他们总是在我想要的顺序显示, 如这里所示:

image

我希望我已经一直在做这.

</结束>

订阅我的博客.

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

Technorati 标签:

InfoPath 表单服务, 基于表单的身份验证 (FBA) 和唯一的文件名称

我已经对某些 InfoPath 表单本周在 MOSS FBA 环境中工作和教训, 当我去部署到生产环境中使用 FBA 形式区的用户名() 功能不起作用. 我用它来生成唯一的文件名.

井, 该函数在 FBA 环境中不工作 (至少, 未出的框中). 和, 后的思考, 在我的计划的方式中使用的用户名不会保证了唯一的文件名在任何情况下.

我的解决方案是使用了现在() 函数和触发窗体的加载规则. 我需要将文件名称分配数据元素,当它是空白:

image

image

这种方法的优点是只有一次集文件名称. (我没有表现出来的屏幕截图, 但一个条件放要只火时"myFilename"是空白的规则). 我用来在数据源级别设置的文件的名称. 通常, 我会做的东西 (坏) 喜欢这个:

image

这带来的问题是,如果用户 A 在周一打开窗体,并将用户 B 更改周二, 到头来你会用两种不同形式因为两个不同的用户将其保存为不同的用户名称.

所以, FBA 可以很一般,InfoPath 特别烦人, 它让我重新思考小,但真的很重要的技术细节和的方法,否则我不会做!

</结束>

订阅我的博客.

跟我在 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 标记: ,