AWG Blogs

Thursday, August 23, 2012

Add Change Order Action Menu Item

By default only the Links list type has this menu item in SharePoint 2007. It can be added to any other list though through the web services API, specifically updating the "Ordered" field property to True. See http://msdn.microsoft.com/en-us/library/lists.lists.updatelist(v=office.12)

Once that's done, just edit the View properties (including the anonymous views from any web parts) and set "Allow users to order items in this view." Doing so will change the order shown to that of the built-in Ordered lists property, which is what is updated via the (now shown) Change Order action menu for the view.

Here is an adapted sample console app:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Property Editor - v.0.1");
            Console.WriteLine("Enter the URL of the Lists web service");
            string url = Console.ReadLine();
            Console.WriteLine("Enter the Display name of your list, e.g. My List");
            string listname = Console.ReadLine();
            Console.WriteLine("Enter the list property (e.g. Ordered)");
            string property = Console.ReadLine();
            Console.WriteLine("Enter the property value (e.g. TRUE)");
            string propertyValue = Console.ReadLine();

            Web_Reference_Folder.Lists listService = new Web_Reference_Folder.Lists();
            listService.Credentials= System.Net.CredentialCache.DefaultCredentials;
            listService.Url = url;

            XmlDocument xmlDoc = new System.Xml.XmlDocument();

            XmlNode ndProperties = xmlDoc.CreateNode(XmlNodeType.Element, "List", 
                "");

            XmlAttribute ndOtherAttrib =
                (XmlAttribute)xmlDoc.CreateNode(XmlNodeType.Attribute,
                property, "");
            ndOtherAttrib.Value = propertyValue;
            ndProperties.Attributes.Append(ndOtherAttrib);

            try
            {
                XmlNode ndReturn =
                    listService.UpdateList(listname, 
                    ndProperties, null, null, null, 
                    null);

                Console.WriteLine(ndReturn.OuterXml);
            }

            catch (Exception ex)
            {
                Console.WriteLine("Message:\n" + ex.Message + "\nStackTrace:\n" + 
                    ex.StackTrace);
            }
            Console.ReadLine();
        }
    }

Saturday, August 18, 2012

Compiling MD5summer in XE2

- Download md5summer.tar.gz from http://md5summer.cvs.sourceforge.net/md5summer/ and extract all
  - Alternately get source (v1.2.0.05) from http://md5summer.cvs.sourceforge.net/viewvc/md5summer/md5summer/Source/
- Download tpshellshock_1_02_2011-09-08.zip from http://sourceforge.net/projects/tpshellshock/
- Perform installation of ShellShock per the readme.txt, i.e.
  - add the tpshellshock_1_02_2011-09-08\source directory to XE2's Tools Options, Delphi Options, Library Path
  - open .packages\Delphi XE2\ShellShock Delphi XE2.groupproj in Delphi XE2
  - Right click on K102_R160.bpl and compile
  - Right click on K102_D160.bpl and install
- If reopening IDE, may need to do Component, Install Packages, then add
c:\Users\Public\Documents\RAD Studio\9.0\Bpl\K102_D160.bpl
- Download and install the author's components at http://luke.pascoe.net.nz/tools.html ; also add library ref.
- Open md5summer.dpr to load project
- Compile and run

Note, if you choose not to install the author's components, you will need to make a few edits:
- To remove About components functionality
  - open u_About.pas and edit code: remove or delete all references to "Maze" and "Rect"
  - right click (RC) md5summer.exe and View Source, then comment out Application.CreateForm(TAbout, About)
- Open u_DoMD5s.pas and comment out these lines:
  - BatchGauge: TGauge;
  - FileGauge: TGauge;
  - Remove "Guage" from uses
- Open u_DoMD5s.dfm
  - drag two TGauge's from Samples in the Tool Palette to the form under Batch and File labels
  - name the top one BatchGauge and the bottom one FileGauge
- in u_DoMD5s.pas, search and replace all "Gauge.Position" with "Gauge.Progess"




Thursday, August 2, 2012

Logic for Viewing 2D Data in 3D

 Logic for Viewing 2D Data in 3D
Do with groupings of a unit (grouping function g) as x axis and observee in y axis. (Note: the fourth dimension would be grouping of groupings, i.e. higher order grouping functions as possible inputs.) Cell(x,y) equals the function of data items h(f(),g(),v,t(y,z,w) where y=y1) -- in our case, given y1 and grouping function g, lookup z for record that matches f(g(w)) -- below, for y1=observee1, 1.1 and 1.2 could be grouped into group with key v=1, i.e. g(v,t)={1.1,1.2}, then f(g(v,t))= max of {1.1,1.2} or 1.2, so return value is b == cell(x,y)

sample data:
(y)                (z)   (w)
observee1     a     1.1
observee1     b     1.2
observee1     c     2.1
observee2     a     2.1
observee2     a     1.1