Interessante iPhone Anwendung

image Das mobile Team hier bei Slalom hat eine wirklich coole iPad-Anwendung entwickelt, die virtuelle Realität Vergrößerung mit offline-Funktion zu bieten, was möglicherweise die beste New York u-Bahn Finder und routing app verfügbar heute verbindet.

Hier ist die Webseite, die die app genauer beschreiben: http://www.nycstationfinder.com/.

Ich haben keine Apple-Produkte, so dass ich es selbst testen kann nicht, aber es sieht ziemlich cool. Ich hoffe, dass sie es über Android bald port.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

MVP wieder

Microsoft erneuten mich mit SharePoint MVP am 1. Juli dieses Jahres und es ist nicht weniger spannend als es das erste Mal vor vier Jahren war.

Der SharePoint-Community ist nur ein erstaunlicher Ort.  Ich erinnere mich, als ich zuerst in SharePoint von meinem alten Arbeitgeber eingeführt wurde, Conchango.  Ich war nicht glücklich darüber Lächeln.  Ich hatte in einer BizTalk-Welt für ein Jahr oder zwei im Vorfeld meine Arbeit dort und davor gelebt, arbeitete in einer anderen insular Welt von Menschen und Unternehmen, die ihren Lebensunterhalt aus der Progress Software.  Ich sage "insular", weil die SharePoint-Welt alles andere als ist!

Ich bin immer wieder froh und aufgeregt, um Teil dieser bizarren online Gemeinschaft von Menschen, die fühlen sich merkwürdigerweise Blog endlos gezwungen werden, Geben Sie ihre samstags kostenlos Konferenzen auf, online-Foren verfolgen, bauen Sie alle Arten von schlagkräftigen aus freien Produkten oben auf CodePlex zu setzen und eine Vielzahl von anderen Bemühungen der Gemeinschaft in allen Formen und Größen. 

Ich weiß nicht, was es über dieses Produkt, das solche Freiwilligenarbeit und Immersion inspiriert, aber ich hoffe, es nie Änderungen.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lassen Sie leuchtende Beispiele führen den Weg für höhere SharePoint-Verabschiedung

Meine erste "reine" BrightStarr-Blog-Eintrag wurde heute veröffentlicht.  Hier ist ein teaser:

Hat es viel Gespräch auf dem Internets spät zum Thema SharePoint Annahme und vor allem deren Fehlen. Niemand will gehen auf die Probleme der Gestaltung einer Farm und Sicherheit Infrastruktur, Teilnahme an workshops, Zusammenstellung einen pfiffigen Look And feel, erarbeiten eine Rock solid Informationsarchitektur, die die Wechselfälle der Firma Re-Orgs standhalten und schließlich, eine Fanfare gefüllten Rollout nur um drei Monate Post entdecken Go live, die weniger als 50% die Firma Mitarbeiter verwenden SharePoint und die meisten von ihnen sind es verwenden, um die alten Netzwerk-Dateiserver zu ersetzen ("die s:\ Laufwerk").

Kein Patentrezept (oder einzelnen Blog-post) geht um dieses Problem zu lösen. Jedoch, Es gibt viele Dinge, die Sie tun können, um das Risiko eines anämischen SharePoint-Portals. Eine solche Technik ist der "Shining Example Pattern."

Ich würde gerne andere SharePoint Annahme Strategien kennen, die Sie interessieren, zu teilen.  Wenn Sie austauschen,, terlassen Sie bitte als Kommentar auf dem Blog BrightStarr hin.

Die ganze Sache hier lesen: http://www.brightstarr.com/US/Pages/blog-view.aspx?BlogID=52

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

"Zugriff verweigert” zu Default.aspx auf einer SharePoint 2010 -Unterwebsite

Einer meiner Kunden ging mit ihrer SharePoint Online 2010 Umwelt heute.  Wir entdeckten, dass eine bestimmte Gruppe von Benutzern konnte nicht ihre Standard-Startseite zugreifen.  SharePoint reagiert mit "Zugriff verweigert" und die üblichen "Anmelden als anderer Benutzer" oder "Zugang beantragen" Antwort. 

Wenn wir die nette "Access Check" Funktion verwendet bestätigt es, dass der Benutzer wirklich Zugriff haben.  Noch, Sie konnte nicht zu der Seite gelangen..

Ich folgte viele Straßen in verschiedenen Sackgassen, bis ich mich entschied, die Webparts auf der gebrochenen Seite gegen eine ähnliche Arbeiten-Seite vergleichen.  Das habe ich durch die Einführung der Seite Wartungsmodus durch Hinzufügen"?Inhalt = 1 "an der Seite. Also, Es sah aus wie "http://Server/Subsite/Subsite/default.aspx?Inhalt = 1 ". 

Dies zeigte mir zwei Webparts mit dem Namen "Fehler" mit einer Beschreibung wie "Error" auf der gebrochenen Seite.  Ich glaube nicht, nehmen eine Bildschirm-Cap zum Zeitpunkt.

Ich entfernt und das Problem gelöst.

Ich habe eine Frage wie diese kommen bis auf den Foren in der Vergangenheit gesehen und ich war sehr skeptisch, was das Plakat Beharren darauf, dass er Sicherheit richtig aufgestellt hatte.  Ich * weiß * ich hatte Sicherheit eingerichtet, Recht Lächeln  Das nächste Mal, Ich werde mehr offenen und weniger skeptisch sein..

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

XSLT und jQuery-Beispiele

Ich mache seit viel von XSLT und jQuery und dachte, ich würde ein paar Ausschnitte teilen, die andere in Zukunft nützlich sein können.

Beispiel 1: Einfache JavaScript ausgeben / jQuery in XSLT:

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <!– Die Abfrage freundlich Filter ausgeblendeten Feld leer –>
  <Skript-Typ = "Text/Javascript">
    $(Dokument).bereit(Funktion(){
      $("#QueryFriendlyFilters").Val("leer");
    });
  </Skript>

</XSL:Vorlage>

Das Bit ausgibt einige JavaScript, das wartet, bis die Seite geladen (wegen der $(Dokument).bereit(…)) und dann der Wert eines ausgeblendeten Felds benannte Mengen QueryFriendlyFilters zu der literale Wert "leer".

Beispiel 2: Verwendung <XSL:If> "größer als" überprüfen,  "kleiner als", usw..

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <Div Id = "FdcAllFilters">
 
    <XSL:Wenn test="@Count>0">
      <span Class = "FdcFilterLabel">Aktuelle Filter:</Spannweite>
    </XSL:If>

    <!– hier passiert mehr Material. –>

</XSL:Vorlage>

Der oben stehenden Ausschnitt prüft, ob ein Attribut namens "Zählen" des Elements "etwas" größer als 0 (null) ist.  Der XML-Code dahinter wäre so etwas wie:”

<etwas Count = "5" />

Beispiel 3: Durchlaufen aller Elemente, einstreuen jQuery Aufrufe.

<!– Alle Filter durchlaufen und die korrekte Anzeige  Links. –>
<XSL:for-each select = "UserFilter">

  <eine Klasse = "FilterHref" Href = "Javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</eine>

  <span Class = "FdcFilterLabel"><XSL:Wert-der select="@FilterValue"/></Spannweite>

  <Skript-Typ = "Text/Javascript">

    $(Dokument).bereit(Funktion(){
        <XSL:Text><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:Text>\"<XSL:Wert-der select="@FilterValue"/>\"<XSL:Text><![CDATA["));]]></XSL:Text>
    });

  </Skript>

</XSL:für jeden>

Der oben stehenden Ausschnitt ist die komplizierteste und möglicherweise gibt es einfachere Wege, es zu tun.

Der XML-Code dahinter sieht ungefähr wie folgt:

<UserFilter ID = "123" FilterValue = "Xyzzy" />

Dieser Ausschnitt ist durchlaufen <UserFilter> Knoten. 

Es gibt zunächst einen Anker kennzeichnen, die beim Klicken auf Ruft eine JavaScript-Funktion, die bereits auf der Seite ist, "MySubmitPage" und übergibt den Wert eines Attributs auf der <UserFilter> Knoten mit dem Namen "ID". 

Dann gibt es einige jQuery, die wartet, die Seite zu laden.  Dass jQuery aktualisiert ein ausgeblendetes Feld mit dem Namen "QueryFriendlyFilters", indem den Wert des Attributs FilterValue.  Beachten Sie alle verrückt <XSL:Text> und <![CDATA[ … ]]> Bestellung.

Das ist es, hoffe es Hilfen!

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

PerformancePoint und Fehler 33494

Einer meiner Kunden rief heute bei ihrem PerformancePoint-Umfeld (in SharePoint 2010) brach.  Eine app-Servern in der Farm lief geringen Speicherplatz auf der Festplatte.  Unter Berücksichtigung, dass, der Client deinstalliert "too much" und die PP-Sachen alle nicht mehr funktioniert.  Verschiedene Webparts zeigen würde, "ein unerwarteter Fehler ist aufgetreten. Fehler 33494. Zusätzliche Informationen wurden für den Administrator angemeldet":

image

Ich schaute auf die Fehler und nicht etwas speziell für "Fehler 33494" finden, aber diese MSDN Foren Beitrag war hilfreich: http://social.technet.microsoft.com/forums/en-us/sharepoint2010setup/thread/E1FE189D-7F89-455D-A98B-C1A12D8626AB

Ich fand die ADOMD.NET hier als Komponente in SQL Server 2008 Featurepack: http://www.microsoft.com/downloads/en/details.aspx?FamilyId=228DE03F-3B5A-428A-923F-58A033D316E1&displaylang=en

image

(zum Vergrößern anklicken)

Heruntergeladen und installiert, und es alles behoben.

Ich denke, dass dies ist eine ziemlich Spinner Art Fehler, aber wenn du es, Sie müssen mindestens eine Option.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetListItems und Ordner

Ich tat etwas Forschung für jemanden heute rund um den list.asmx-Web-Service im Rahmen des SharePoint 2010 (und früher).  Sie war in der Lage, die Listenelemente im Stammordner (die Namen der Unterordner), aber Elemente in Unterordner erhalten könnte.  Ich habe einige schauen herum auf dem Internets und es ist ein überraschend häufig gestellte Frage.  Noch, Ich könnte eine gute Antwort auf die einfache Frage nicht erhalten., "Wenn ich den Ordner weiß, Wie bekomme ich die Elemente in den Ordner?”  Um ehrlich zu sein, Ich versuchte nicht allzu hart, da ich zu Figur diesein raus auf eigene Faust für eine Weile wollte Lächeln.

Um dies einzurichten, Ich habe eine Site mit dem Namen "Blogging Scenarios" und eine benutzerdefinierte Liste mit dem Namen "Benutzerdefinierte Liste mit Sub-Ordner".  Ich habe dann Ordner mit dem Namen:

  • Jahr 2005
  • Jahr 2006
  • Jahr 2007

Ich hinzugefügt ein paar Elemente in den Ordner "Jahr 2006".  Dies ist, wie es aussieht:

image

Mein Freund ist nicht schreiben von C#-Code, sondern eher mit Hilfe von Java, So war der SOAP-Umschlag, was sie wirklich brauchte.  Zu erhalten, die, Ich schrieb ein wenig jQuery und Fiddler dann verwendet, um das tatsächliche HTTP-Gespräch zu erhalten.

Hier ist die relevante jQuery (Ich kopiert den Code unten unten wenn Sie kopieren möchten):

image

Sie erste Schlüssel ist, um sowohl eine <queryOptions> und <QueryOptions> Knoten.  Der zweite Schlüssel ist, dass die <Ordner> der Knoten ist ein URL, auf den der Client Zugriff hat.

Möglicherweise gibt es andere Möglichkeiten, um dies, aber dies funktioniert gut für mich, bei der Verwendung von jQuery.

Hier ist der SOAP-Umschlag für die oben:

<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Körper>
    <GetListItems Xmlns =’
http://Schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef-Name =' Titel’ />
          <FieldRef-Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Ordner>
http://demoserver1-Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Körper>
</soapenv:Umschlag>

Viele Beispiele und Diskussion um dies führte mich zu glauben, dass alles, was ich brauche <QueryOptions> und geben Sie einen Ordnernamen ein.  Für mich, Ich müssen sowohl in wrap <queryOptions> ebenso wie geben Sie eine vollqualifizierte URL für den <Ordner> Knoten.

Hier ist das jQuery-AJAX-setup:

$(Dokument).bereit(Funktion() {
       Var SoapEnv =
           "<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Körper> \
                    <GetListItems Xmlns =’http://Schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef-Name =' Titel’ /> \
                              <FieldRef-Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Ordner>http://demoserver1/Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Körper> \
           </soapenv:Umschlag>";

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetList und "Wert darf nicht null sein”

Heute entdeckte ich, dass die GetList() Methode in lists.asmx Es ist anfällig für eine geheimnisvolle "Wert darf nicht null sein" Ausnahme auslösen oder Webdienst hat sehr sorgfältig aufgerufen werden (und das geht davon aus, dass Sie vorbei die schlimmer generische Fehlermeldung erhalten können, "Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.")  Speziell, Ich fand, dass Sie keine Art von Präfix auf die GetList-Methode bereitstellen können.  Der folgende jQuery-Ausschnitt zeigt die:

image

Wenn Sie das tun, der Webdienst antwortet mit "Wert darf nicht null pro dies als sein" Fiddler-bereitgestellten HTTP-Protokoll:

<?XML Version = "1.0" Encoding = "Utf-8"?>
  <Seife:Umschlag
     xmlns:Seife ="
http://Schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:Xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <Seife:Körper>
    <Seife:Fehler>
      <FaultCode>Seife:Server</FaultCode>
      <faultString>
        Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.
      </faultString>
      <Detail>
        <ErrorString Xmlns ="
http://Schemas.Microsoft.com/SharePoint/SOAP/">
Wert darf nicht null sein..
        </ErrorString>
      </Detail>
    </Seife:Fehler>
  </Seife:Körper>
</Seife:Umschlag>

Natürlich, Sie würde nicht das Präfix "s0" wahrscheinlich auf eigene hinzufügen., aber einige Werkzeuge sind dafür anfällig (wie Eclipse).

Dies ist umso mehr verwirrend / frustrierend, da andere Methoden Präfixe tolerieren.  Zum Beispiel, die GetListCollection Methode dagegen nicht, wenn es vorangestellt worden ist, auch mit Unsinn Präfixe wie "Xyzzy":

image

Diese "Wert darf nicht null sein" scheint ziemlich häufig mit lists.asmx so hoffentlich dies jemand in Zukunft helfen wird.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin