cross
Foswiki General Assembly will be held on 12th December 2019, 1200 UTC on Freenode IRC channel #foswiki-association. See AgendaTenthGeneralAssembly

Personal Info AddOn Application Sections

Admin topic for PersonalInfoAddOn.
This topic holds a number of modules (INCLUDE sections) to display and search user information. See also PersonalInfoHome for documentation and usage examples.

Leave this file intact - always make custom changes to PersonalInfo.

UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser

personalInfo

%STARTSECTION{"personalInfoFields"}% This block is only defined in PersonalInfo %ENDSECTION{"personalInfoFields"}%

%STARTSECTION{"personalInfoDataRow" fieldName=%FIELDNAME% label=%LABEL%}%<tr>
<th> %label% </th>
<td> %IF{"defined editUserData" 
         then="<noautolink><input type='text' name='%fieldName%' id='%fieldName%' $percntIF{$quot\'%editable%\'=\'no\'$quot 
                                 then=$quotdisabled=\'disabled\'$quot
                              }$percnt $percntIF{$quot\'%editable%\'=\'no\'$quot 
                                 then=$quotclass=\'foswikiInputFieldDisabled\'$quot 
                                 else=$quotclass=\'foswikiInputField\'$quot
                              }$percnt size='40' value='$percntFORMFIELD{\"%fieldName%\" topic=\"%BASETOPIC%\" format=\"<nop>$value\"}$percnt' />
               </noautolink>" 
         else="$percntFORMFIELD{\"%fieldName%\" topic=\"%BASETOPIC%\" format=\"<nop>$value\"}$percnt" 
      }% </td>
</tr>%ENDSECTION{"personalInfoDataRow"}%

personalInfoStyle

In view template PersonalInfoUserViewTemplate these styles are added to the HTML head. Other pages need to include the styles using %INCLUDE{}%.

%STARTSECTION{"personalInfoStyle"}%%ADDTOHEAD{
"PersonalInfoAddOn_personalInfoStyle"
text="<style type='text/css' media='all'>
.personalInfo {
   margin:0 0 1em 0;
}
.personalInfo .pIparagraphWithImageLeftText table {
   border-width:1px 0 0 0;
   border-collapse:collapse;
}
.personalInfo .pIparagraphWithImageLeftText th {
   font-weight:normal;
   text-align:left;
   color:#555;
   overflow:hidden;
   white-space:nowrap;
}
.personalInfo .pIparagraphWithImageLeftText td {
   overflow:hidden;
   white-space:nowrap;
}
.personalInfo .pIparagraphWithImageLeftText td,
.personalInfo .pIparagraphWithImageLeftText th {
   line-height:1.3em;
   border-width:0 0 1px 0;
   padding:.4em .8em;
   vertical-align:middle;
}
.personalInfo .pIparagraphWithImageLeftText table,
.personalInfo .pIparagraphWithImageLeftText td,
.personalInfo .pIparagraphWithImageLeftText th {
   border-style:solid;
   border-color:#e5e2db;
}
.personalInfoFormDataActions {
   margin:1em 0 2em 0;
   padding:0 .8em; /* same as .pIparagraphWithImageLeftText td */
}
.personalInfoFormDataActions .foswikiSeparator {
   color:#ccc;
}
</style>"
}%%ENDSECTION{"personalInfoStyle"}%

personalInfo

%STARTSECTION{"personalInfo"}%%INCLUDE{"PersonalInfoLayoutModules" section="paragraphWithImageLeftStyle"}%<div class="pIparagraphFrame personalInfo%IF{"$'FORMFIELD{\"WorkStatus\" topic=\"%BASETOPIC%\"}'!='Current'" then=" pIFormer"}%">
---+!! <noautolink>%FORMFIELD{"FirstName" topic="%BASETOPIC%"}% %FORMFIELD{"LastName" topic="%BASETOPIC%"}%</noautolink> %IF{"$'FORMFIELD{\"WorkStatus\" topic=\"%BASETOPIC%\"}'!='Current'" then=" <span class='pIStatus'>(inactive)</span>"}%
<form name="main" action="%SCRIPTURLPATH{"save"}%/%BASEWEB%/%BASETOPIC%" method="post">
<input type="hidden" name="editaction" value="form" />
%INCLUDE{"PersonalInfoLayoutModules" 
   section="paragraphWithImageLeft" 
   imgName="%FORMFIELD{"Picture" topic="%BASEWEB%.%BASETOPIC%" format="$value" default="" alttext=""}%" 
   imgWeb="%BASEWEB%" 
   imgTopic="%BASETOPIC%" 
   imgWidth="120" 
   imgTitle="" 
   text="%INCLUDE{"PersonalInfo" section="personalInfoFields"}%
%IF{"not defined editUserData" 
   then="<div class='personalInfoFormDataActions foswikiUnvisited foswikiSmall'>
            <a href='%SCRIPTURL{view}%/%BASEWEB%/%BASETOPIC%?editUserData=on' rel='nofollow'>Edit data</a> 
            <span class='foswikiSeparator'>|</span> 
            <span class='foswikiUnvisited'><a href='%SCRIPTURL{view}%/%BASEWEB%/%BASETOPIC%?template=PersonalInfoPictureView' rel='nofollow'>%MAKETEXT{Change picture}%</a></span> 
            <span class='foswikiSeparator'>|</span> %IF{"$'FORMFIELD{\"WorkStatus\"  topic=\"%BASETOPIC%\"}'!='Current'" 
               then="<input type='image' src='%ICONURLPATH{userinactive}%' alt='Set active' /> Set active<input type='hidden' name='WorkStatus' value='Current' />" 
               else="<input type='image' src='%ICONURLPATH{useractive}%' alt='Set inactive' /> Set inactive<input type='hidden' name='WorkStatus' value='Former' />"}% 
         </div>" 
}% %IF{"defined editUserData" 
   then="<div class='personalInfoFormDataActions'>
         <input type='submit' class='foswikiSubmit' name='save' id='save' value='%MAKETEXT{Save}%' /> 
         <input type='submit' class='foswikiButtonCancel' name='cancel' id='cancel' value='%MAKETEXT{Cancel}%' />
      </div>" 
   }%" 
}% </form></div><!--/pIparagraphFrame-->%ENDSECTION{"personalInfo"}%

activateDeactivate

%STARTSECTION{"activateDeactivate"}%
<form
%ENDSECTION{"activateDeactivate"}%

phoneList

%STARTSECTION{"phoneList"}%%SEARCH{ "[W]orkPhone;[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="   * [[$web.$topic][$topic]] $formfield(WorkPhone)"}%%ENDSECTION{"phoneList"}%

phoneListXML

%STARTSECTION{"phoneListXML"}%<?xml version="1.0" encoding="ISO-8859-1"?>
<users>
%SEARCH{ "[F]irstName.*value=.*();[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="<user><firstname><![CDATA[$formfield(FirstName)]]></firstname><lastname><![CDATA[$formfield(LastName)]]></lastname><phone><![CDATA[$formfield(WorkPhone)]]></phone><url><![CDATA[%SCRIPTURL{view}%/%WEB%/$topic]]></url><imgname><![CDATA[$formfield(Picture)]]></imgname><imgurl><![CDATA[%PUBURL%/Main/$topic/]]></imgurl></user>" "}%
</users>
%ENDSECTION{"phoneListXML"}%

personalSearch

%STARTSECTION{"personalSearch"}%%SEARCH{ "[F]irstName.*value=.*(%URLPARAM{"q"}%)|[L]astName.*value=.*(%URLPARAM{"q"}%)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="   * [[$web.$topic][$topic]] $formfield(WorkPhone)"}%%ENDSECTION{"personalSearch"}%

vCard

%STARTSECTION{"vCard"}%%SEARCH{ "[F]irstName.*value=.*();[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="begin:vcard
fn:$formfield(FirstName) $formfield(LastName)
n:$formfield(LastName);$formfield(FirstName)
tel;type=work:$formfield(WorkPhone)
tel;type=cell:$formfield(WorkPhoneMobile)
email;type=WORK:$formfield(WorkEmail)
end:vcard"}%%ENDSECTION{"vCard"}%

directSearch

%STARTSECTION{"directSearch" title="%title%" maxresults="%maxresults%" layout="%layout%" showpictures="%showpictures%" inputfieldsize="%inputfieldsize%" pictureheight="%PICTUREHEIGHT%"}% <div> %title% </div>
<input type="text" class="foswikiInputField" size="%IF{"defined inputfieldsize" then="%inputfieldsize%" else="12"}%" id="personalInfoSearchBox" name="personalInfoSearchBox" />
<div id="personalInfoSearchResults"><!-- search results will be displayed here --></div>
%IF{"$PERSONALINFOADDON_FILECACHE" then='%INCLUDE{"PersonalInfo" section="directSearchScriptFile"}%' else='%INCLUDE{"PersonalInfo" section="directSearchScript" raw="on" literal="on"}%'}%
%INCLUDE{"PersonalInfoModules" section="initSearchBox" raw="on" literal="on"}%
<style type="text/css" media="all">
#personalInfoSearchResults td {
   padding:.1em .5em .1em 0;
   vertical-align:middle;
   border-bottom:1px solid #eee;
}
</style>%ENDSECTION{"directSearch"}%

%STARTSECTION{"initSearchBox"}%%ADDTOHEAD{
"PersonalInfo_initSearchBox"
text="<script language='javascript' type='text/javascript'>
// <![CDATA[
var pISearch; if (pISearch == undefined) pISearch = {};
function personalInfoHandleKeyUp() {
   pISearch.showResults(this.value);
   return false;
}
function initSearchBox() {
   var box = document.getElementById('personalInfoSearchBox');
   if (box) {
      box.onkeyup = personalInfoHandleKeyUp;
      box.focus();
      pISearch.showResults(box.value);
   }
}
// assume jquery
$(document).ready(initSearchBox);
// ]]>
</script>"
requires="JQUERYPLUGIN"
}%%ENDSECTION{"initSearchBox"}%

%STARTSECTION{"directSearchScript"}%<script language="javascript" type="text/javascript">
// <![CDATA[
var MAX_RESULTS=%IF{"defined maxresults" then="%maxresults%" else="12"}%;
%INCLUDE{"PersonalInfoModules" section="directSearchScriptCode"}%
// ]]>
</script>%ENDSECTION{"directSearchScript"}%

%STARTSECTION{"directSearchScriptFile"}%<script language="javascript" type="text/javascript" src="%PUBURL%/%WEB%/PersonalInfo/directSearch.js"></script>%ENDSECTION{"directSearchScriptFile"}%

%STARTSECTION{"directSearchScriptCode"}%var pISearch; if (pISearch == undefined) pISearch = {};
pISearch.userData = new Array(%INCLUDE{"PersonalInfo" section="directSearchData"}%);
var MAX_RESULTS;
if (MAX_RESULTS == undefined) MAX_RESULTS = 12;
pISearch.initSearch = function() {}
pISearch.startSearch = function() {}
pISearch.endSearch = function(inOutput) {
   var outputElem = document.getElementById("personalInfoSearchResults");
   if (outputElem) outputElem.innerHTML = inOutput;
}
pISearch.processResult = function(inName, inUserData) {
   var url = "%SCRIPTURL{view}%/" + inUserData.topic;
   var phone = inUserData.phone;
   var output = "";
   output += "<tr>";
   output += "<td><a href=\u0027" + url + "\u0027>" + inName + "</a></td>";
   output += "<td>" + phone + "</td>";
   output += "</tr>";
   return output;
}
pISearch.processZeroResults = function() {}
pISearch.withinBounds = function(inCount) {
   if (MAX_RESULTS == -1) return true;
   return inCount < MAX_RESULTS;
}
pISearch.outputHtmlStart = function() {
   return "<table cellpadding=\u00270\u0027 cellspacing=\u00270\u0027>";
}
pISearch.outputHtmlEnd = function() {
   return "</table>";
}
pISearch.showResults = function(inValue) {
   if (!pISearch.userData) return;
   var output = "";
   var resultCount = 0;
   var query = inValue.toLowerCase();
   if (query.length != 0) {
      var regex = new RegExp("\\b" + query, "gi");
      pISearch.startSearch();
      output = pISearch.outputHtmlStart();
      var i = 0;
      while ( i < pISearch.userData.length && pISearch.withinBounds(resultCount)) {
         var name = pISearch.userData[i].name;
         if (name.match(regex)) {
            output += pISearch.processResult(name, pISearch.userData[i]);
            resultCount++;
         }
         i++;
      }
      output += pISearch.outputHtmlEnd();
      
   } else {
      pISearch.processZeroResults();
   }
   if (query.length > 0 && resultCount == 0) {
      output = "";
   }
   pISearch.endSearch(output);
}%ENDSECTION{"directSearchScriptCode"}%

directSearchData

%STARTSECTION{"directSearchData"}%%SEARCH{ "[F]irstName.*value=.*();[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="{name:\"$formfield(FirstName) $formfield(LastName)\",phone:\"$formfield(WorkPhone)\",topic:\"$web/$topic\",pictureName:\"$formfield(Picture)\"}" separator=", "}%%ENDSECTION{"directSearchData"}%

tableOfAllUsers

%STARTSECTION{"tableOfAllUsers"}%<style type="text/css" media="all">
#compact table {
font-size:86%;
}
#compact td {
padding-top:0;
padding-bottom:0;
margin:0;
}
#compact a:link,
#compact a:visited {
color:#000;
text-decoration:none;
}
#compact a:hover {
color:#fff;
}
</style>
<div id="compact">
| *Personal page* | *Phone* | *E-mail* | *Location* |
%SEARCH{ "[F]irstName.*value=.*();[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser" format="|[[%SCRIPTURL{view}%/$web/$topic][$formfield(FirstName) $formfield(LastName)]] |$formfield(WorkPhone) |$formfield(WorkEmail) |$formfield(WorkLocation) |" "}%
</div>%ENDSECTION{"tableOfAllUsers"}%

Pictures

%STARTSECTION{"pictures"}%%ADDTOHEAD{
"PersonalInfoAddOn_pictures"
text="<style type='text/css' media='all'>
#pISearchResultsGrid {
   margin:1em 0;
}
#pISearchResultsGrid .foswikiImage a img {
   border:none;
   margin:0 0 .35em 0;
   padding:0;
}
#pISearchResultsGrid a.pISearchResultsGridItem {
   display:block;
   float:left;
   text-align:center;
   border:1px solid #eee;
   text-decoration:none;
   margin:0 .5em 1em 0;
   padding:3px;
   overflow:hidden;
   width:auto;%IF{"defined gridWidth" then="width:%gridWidth%px;"}%
height:100%;%IF{"defined gridHeight" then="height:%gridHeight%px;"}%
}
#pISearchResultsGrid a.pISearchResultsGridItem img {
   overflow:hidden;
   width:auto;%IF{"defined imgWidth and '%imgWidth%'!=''" then="width:%imgWidth%px;"}%
}
#pISearchResultsGrid .pISearchResultsGridInfo {
   display:block;
   font-size:94%;
   line-height:100%;
overflow:hidden;
}
#pISearchResultsGrid a:link .pISearchResultsGridInfo,
#pISearchResultsGrid a:visited .pISearchResultsGridInfo {
   text-decoration:none;
   color:#06c;
}
#pISearchResultsGrid .foswikiImage a:hover {
   border:1px solid #06c;
}
#pISearchResultsGrid a:hover .pISearchResultsGridInfo {
   text-decoration:none;
   color:#06c;
   background:none;
}
</style>"
}%
<div id="pISearchResultsGrid">%SEARCH{ "[W]orkStatus.*value=.*(Current)" web="%MAINWEB%" type="regex" nonoise="on" excludetopic="UserForm,NewUserTemplate,PersonalInfo,PersonalInfoModules,PersonalInfoDocumentation,ProjectContributor,WikiGuest,UnknownUser%IF{'defined exclude' then=',%exclude%'}%" order="topic" format="<div class='foswikiImage'><a href='%SCRIPTURL{view}%/$web/$topic' class='pISearchResultsGridItem' id='pISearch$topic' title='$formfield(FirstName) $formfield(LastName)'>$percntINCLUDE{$quotPersonalInfoLayoutModules$quot section=$quotimage$quot imgType=$quotnolink$quot imgWeb=$quot$web$quot imgTopic=$quot$topic$quot imgTitle=$quot$formfield(FirstName) $formfield(LastName)$quot imgName=$quot$percntFORMFIELD{$quotPicture$quot topic=$quot$web.$topic$quot format=$quot$value$quot default=$quot$quot alttext=$quot$quot}$percnt$quot}$percnt<span class='pISearchResultsGridInfo'>$formfield(FirstName) $formfield(LastName)</span></a></div>" "}%<p class="foswikiClear" /></div>%ENDSECTION{"pictures"}%

pictureFilterSearch

%STARTSECTION{"pictureFilterSearch"}%%IF{"$PERSONALINFOADDON_FILECACHE" then='%INCLUDE{"PersonalInfo" section="directSearchScriptFile"}%' else='%INCLUDE{"PersonalInfo" section="directSearchScript" raw="on" literal="on"}%'}%<script language="javascript" type="text/javascript">
// <![CDATA[
var pISearch; if (pISearch == undefined) pISearch = {};
var MAX_RESULTS=%IF{"defined maxresults" then="%maxresults%" else="12"}%;
pISearch.pictureSet = {};
pISearch.initSearch = function() {
   if (!pISearch.userData) return;
   MAX_RESULTS = -1;
   var pictureElems = document.getElementById('pISearchResultsGrid').getElementsByTagName('a');
   var i=0;
   while ( i < pISearch.userData.length) {
      var name = pISearch.userData[i].name;
      var re = new RegExp(/(.*?)\//g);
      var topic = pISearch.userData[i].topic.replace(re, "");
      pISearch.pictureSet[topic] = document.getElementById("pISearch" + topic);
      i++;
   }
}
pISearch.startSearch = function() {
   if (pISearch.pictureSet == null) return;
   for (var s in pISearch.pictureSet) {
      if (pISearch.pictureSet[s] != null) {
         pISearch.pictureSet[s].style.display = 'none';
      }
   }
}
pISearch.processZeroResults = function() {
   if (pISearch.pictureSet == null) return;
   for (var s in pISearch.pictureSet) {
      if (pISearch.pictureSet[s] != null) {
         pISearch.pictureSet[s].style.display = 'inline';
      }
   }
}
pISearch.endSearch = function() {}
pISearch.processResult = function(inName, inUserData) {
   if (pISearch.pictureSet == null) return;
   var re = new RegExp(/(.*?)\//g);
   var topic = inUserData.topic.replace(re, "");
   if (pISearch.pictureSet[topic] != null) {
      pISearch.pictureSet[topic].style.display = 'inline';
   }
}
// assume jquery
$(document).ready(pISearch.initSearch);
// ]]>
</script>
%INCLUDE{"PersonalInfoModules" section="initSearchBox" raw="on" literal="on"}%%ENDSECTION{"pictureFilterSearch"}%
Topic attachments
I Attachment Action Size Date Who Comment
btn_viewmy_120x33.pngpng btn_viewmy_120x33.png manage 924 bytes 07 Aug 2011 - 16:15 MarkusUeberall  
btn_viewmy_160x25.pngpng btn_viewmy_160x25.png manage 1 K 07 Aug 2011 - 16:20 MarkusUeberall  
Topic revision: r13 - 18 Nov 2019, MichaelDaum - This page was cached on 03 Dec 2019 - 22:10.

The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy