I've been going through some cross browser testing and came to the issue of newsfeed readers. Historically we have been focused on IE, Outlook 2007+, and SharePoint. But now that the Manage 2000 web site is supporting other browsers, I started wondering about the news feed reader choices that work well with Firefox and Chrome.
What I found was a plethora of website based news aggegators. These do not work well for Manage 2000 purposes. We would like to read rss feeds coming out of Manage 2000 on our intranet without providing access from some Internet hosted rss feed reading site.
These animals do exist. I poked around with searches like "local RSS reader".
For Firefox users there has been a suitable and popular reader available as an extension for a long time called 'Sage':
For Chrome users I found a couple of extensions that work hand in hand. 'Slick RSS Feed Finder' alerts you to the available feeds on a page and lets you subscribe to them. And 'Slick RSS' lets you actually read and manage your feeds:
Tuesday, June 25, 2013
Sunday, June 9, 2013
Manage 2000 Release 8.0 Beta
Well Allan grabbed the beta copy last week to start cleaning. So no more development sneaking into that branch. Cleaning up a release usually happens over several weeks so beta sites should be able to load up early in July.
In the mean time I am going back over the mobile styling options. JQueryMobile has 5 color swatches to their standard look. And it is a good look. But it isn't IPad-ish, and it isn't Android Holo-ish, and it isn't Microsoft Metro-ish or whatever the new "Metro" is.
What seems natural and obvious in hindsight is that if I am using my IPad I would be most comfortable and the M2k feature would be most seamless if the Manage 2000 web functions fit in with that style, and if I am using a Galaxy tablet I would be most comfortable if the Manage 2000 web functions came up looking like Holo, etc...
So I spent last week working on integrating some new stylesheets to emulate some of the major mobile device styles and revising the web preferences to support an "AutoSelect" option that will pick a style based on the browser UserAgent identification in the HTML header.
The various styles and swatches (colorization schemes) need some polishing to eliminate things like dark blue titles on black backgrounds and so forth, but the basic mechanism is in place and the effect is pure magic.
In the mean time I am going back over the mobile styling options. JQueryMobile has 5 color swatches to their standard look. And it is a good look. But it isn't IPad-ish, and it isn't Android Holo-ish, and it isn't Microsoft Metro-ish or whatever the new "Metro" is.
What seems natural and obvious in hindsight is that if I am using my IPad I would be most comfortable and the M2k feature would be most seamless if the Manage 2000 web functions fit in with that style, and if I am using a Galaxy tablet I would be most comfortable if the Manage 2000 web functions came up looking like Holo, etc...
So I spent last week working on integrating some new stylesheets to emulate some of the major mobile device styles and revising the web preferences to support an "AutoSelect" option that will pick a style based on the browser UserAgent identification in the HTML header.
The various styles and swatches (colorization schemes) need some polishing to eliminate things like dark blue titles on black backgrounds and so forth, but the basic mechanism is in place and the effect is pure magic.
Tuesday, March 12, 2013
Manage 2000 Control Extenders Explained
M2kDataBinderControlExtender:
Originally this was an alternative to placing single valued fields in FormView containers. The VS2005-2008 MS databinding changes mandated that a table be bound to a FormView and that textboxes and such in that FormView could then be bound to a field in that table. There are a bunch of things I find objectionable here.
Anyway, I stole the code for this extender from Rick Strahl at WestWind (Hawaii, poor chap), a great source for .Net intelligent thought http://www.west-wind.com/weblog/. The databinder moves fields into and out of datasets from web controls.
Visual Studio 2003 only did one way binding using the ‘eval’ method, and we had to write code to move data back. VS 2005/8 added the ‘bind’ method to move data from web controls back into datasets.
I prefered the method name ‘Fill’ to describe moving fields into the dataset. The name was always used in DataAdapters to mean moving the fields into the dataset from the datasource. So I chose to use the DBCE.Fill expression to request the databinder to fill up the dataset with field values from web controls.
While working on the m2kScrolledSetControlExtender I enhanced this extender to bind fields from dataset to columns in a JSON array stored in a hidden field (Bind To Client). The scrolledset then moves fields between a hidden field and textboxes inside the browser using javascript. The hiddenfield acts like FILE.ITEM(1) providing working storage at the browser end. Together these extenders manage the transmission from datasets to scrolledsets and back.
Since then, based on application work by the development team, I have been adding additional support in the data binder for other situations like an easy way to bind SA MV sets to multi-line textboxes and just lately support for RadioButtonLists.
The Microsoft databinding patterns can still be used and, in fact, for grid displays and other sorts of table level binding I expect we will continue to use ObjectDataSource controls.
M2kScrolledSetControlExtender:
My original goal for the scrolled set extender was to create a way to have scrolled set processing in web pages that matched the keyboarding and development efficiencies of SUB.MT500 and SCROLL.MAINT. Yeah, not quite there yet :)
In one sense the scrolled set extender stands in for SCREEN.BUILD C4. It provides a design time place for the developer to specify scrolled set behavior. It also serves to emit the required javascript for instantiating a javascript object with the operational mechanics implementing the scrolled set experience. The definition for the javascript object and all of its methods actual exists in roiGlobal.js. The scrolledset extender just needs to create an object of that class in the browser world and initialize it with parameters supplied by the application developer.
One of the principal design decisions was to leverage all the data entry power of the roiTextBox, and to loosely package an arbitrary number of entry fields in a table that would contain the set entry controls and display cells. I wrote up a how to with more details on creating scrolled sets named WEB.SCROLLED.SET and added it to the SYS.WEB.HOWTOS menu.
M2kMetaDataControlExtender:
This extender is basically a re-write of the EditParams features that we originally built into roiTextBox and the metadata data access component. It provides PMT like definitions that developers can use to describe the behavior they want and then the Tools layer can take care of the implementation.
When Microsoft broke the component design surface into a separate tab in Visual Studio 2005/2008 they COMPLETELY isolated WebControl design time from Data Access Component design time. This meant that the roiTextBox had no way of talking to the typed datasets or the metadata component. So the whole metadata world and the databinding got shoe-horned into “WebControls” (which the control extenders are) so they can sit in the same designer and interact with webcontrols.
Originally this was an alternative to placing single valued fields in FormView containers. The VS2005-2008 MS databinding changes mandated that a table be bound to a FormView and that textboxes and such in that FormView could then be bound to a field in that table. There are a bunch of things I find objectionable here.
Anyway, I stole the code for this extender from Rick Strahl at WestWind (Hawaii, poor chap), a great source for .Net intelligent thought http://www.west-wind.com/weblog/. The databinder moves fields into and out of datasets from web controls.
Visual Studio 2003 only did one way binding using the ‘eval’ method, and we had to write code to move data back. VS 2005/8 added the ‘bind’ method to move data from web controls back into datasets.
I prefered the method name ‘Fill’ to describe moving fields into the dataset. The name was always used in DataAdapters to mean moving the fields into the dataset from the datasource. So I chose to use the DBCE.Fill expression to request the databinder to fill up the dataset with field values from web controls.
While working on the m2kScrolledSetControlExtender I enhanced this extender to bind fields from dataset to columns in a JSON array stored in a hidden field (Bind To Client). The scrolledset then moves fields between a hidden field and textboxes inside the browser using javascript. The hiddenfield acts like FILE.ITEM(1) providing working storage at the browser end. Together these extenders manage the transmission from datasets to scrolledsets and back.
Since then, based on application work by the development team, I have been adding additional support in the data binder for other situations like an easy way to bind SA MV sets to multi-line textboxes and just lately support for RadioButtonLists.
The Microsoft databinding patterns can still be used and, in fact, for grid displays and other sorts of table level binding I expect we will continue to use ObjectDataSource controls.
M2kScrolledSetControlExtender:
My original goal for the scrolled set extender was to create a way to have scrolled set processing in web pages that matched the keyboarding and development efficiencies of SUB.MT500 and SCROLL.MAINT. Yeah, not quite there yet :)
In one sense the scrolled set extender stands in for SCREEN.BUILD C4. It provides a design time place for the developer to specify scrolled set behavior. It also serves to emit the required javascript for instantiating a javascript object with the operational mechanics implementing the scrolled set experience. The definition for the javascript object and all of its methods actual exists in roiGlobal.js. The scrolledset extender just needs to create an object of that class in the browser world and initialize it with parameters supplied by the application developer.
One of the principal design decisions was to leverage all the data entry power of the roiTextBox, and to loosely package an arbitrary number of entry fields in a table that would contain the set entry controls and display cells. I wrote up a how to with more details on creating scrolled sets named WEB.SCROLLED.SET and added it to the SYS.WEB.HOWTOS menu.
M2kMetaDataControlExtender:
This extender is basically a re-write of the EditParams features that we originally built into roiTextBox and the metadata data access component. It provides PMT like definitions that developers can use to describe the behavior they want and then the Tools layer can take care of the implementation.
When Microsoft broke the component design surface into a separate tab in Visual Studio 2005/2008 they COMPLETELY isolated WebControl design time from Data Access Component design time. This meant that the roiTextBox had no way of talking to the typed datasets or the metadata component. So the whole metadata world and the databinding got shoe-horned into “WebControls” (which the control extenders are) so they can sit in the same designer and interact with webcontrols.
Labels:
ASP.NET,
Custom Code,
Manage 2000,
Software Development,
Web
Friday, January 25, 2013
Manage 2000 Version 8.0
The major version has officially rolled in the development environment. Manage 2000 8.0 here we come. Whoo Hooo!!!
The development team decided a couple of months ago that with all the mobile web changes plus other un-celebrated technology changes that the 7.x branch should end with 7.3 and the upcoming release should begin the 8.x dynasty. Look for it towards year-end of 2013.
So now that changing the numbering is done, it is time to change some more of the machinery as well. I am currently hip deep in ASP.NET 4.5, HTML 5, and VS 2012, trying to solve too many equations with way too many unknowns.
The VS 2012 IDE has a lot to be said for it. It feels faster, and seems to get confused less often by our sub-project pattern web architecture. The solution explorer drill down into project classes, the highlighting of the current variable in neighboring code, the javascript highlighting during edits are all wonderful developer productivity improvements. There is a project level option to run a code analyzer at compile time that functions much like the Manage 2000 BX Audits to provide developers with coding standards compliance feedback.
We are going to have to make a few mass changes to vbproj files and a few references in aspx and ascx files. Infragistics references will have to target ASP.NET 4 instead of 3.5. But it doesn't seem like the Visual Studio Tools Team broke anything critical to Manage 2000 this time around. Whew!
There is an interesting convergence of client side technology happening as Manage 2000 web tools provide lots of client side javascript and JSON validation and editing features which run into some of the unobtrusive validation being supplied with VS 2012 and ASP.NET 4.5 with the inclusion of jquery. And as we proceed down the HTML 5 path we are both running into the validation constraints being coded natively into browsers as they process HTML 5 markup. So it seems I will be spending some time trying to smooth over some redundant repetition of validation on the client end.
The development team decided a couple of months ago that with all the mobile web changes plus other un-celebrated technology changes that the 7.x branch should end with 7.3 and the upcoming release should begin the 8.x dynasty. Look for it towards year-end of 2013.
So now that changing the numbering is done, it is time to change some more of the machinery as well. I am currently hip deep in ASP.NET 4.5, HTML 5, and VS 2012, trying to solve too many equations with way too many unknowns.
The VS 2012 IDE has a lot to be said for it. It feels faster, and seems to get confused less often by our sub-project pattern web architecture. The solution explorer drill down into project classes, the highlighting of the current variable in neighboring code, the javascript highlighting during edits are all wonderful developer productivity improvements. There is a project level option to run a code analyzer at compile time that functions much like the Manage 2000 BX Audits to provide developers with coding standards compliance feedback.
We are going to have to make a few mass changes to vbproj files and a few references in aspx and ascx files. Infragistics references will have to target ASP.NET 4 instead of 3.5. But it doesn't seem like the Visual Studio Tools Team broke anything critical to Manage 2000 this time around. Whew!
There is an interesting convergence of client side technology happening as Manage 2000 web tools provide lots of client side javascript and JSON validation and editing features which run into some of the unobtrusive validation being supplied with VS 2012 and ASP.NET 4.5 with the inclusion of jquery. And as we proceed down the HTML 5 path we are both running into the validation constraints being coded natively into browsers as they process HTML 5 markup. So it seems I will be spending some time trying to smooth over some redundant repetition of validation on the client end.
Thursday, October 11, 2012
How to develop web functions with Visual Studio
There are a number of different sub-topics here:
- Creating a developer sandbox on your desktop
- Loading the Manage 2000 DAC components and WebControls into Visual Studio
- Configuring Visual Studio to 'see' the Manage 2000 web function wizards
- Where to find out more about Manage 2000 Web Technology and how to use it
You can find answers on all of these topics in Manage 2000 7.3 sp3 on the SYS.WEB.HOWTOS menu:
- SYS.DEV.SETUP describes how to set up your PC for Manage 2000 web function development.
- WEB.VS.TOOLBOX.SETUP describes how to add Manage 2000 Web Components and Controls into your installation of Visual Studio.
- WEB.VS.WIZARDS.SETUP describes how to configure Visual Studio to 'see' the M2k wizards.
And in the related courseware section you will find links to INTRO.WEB.COURSE and ADV.WEB.COURSE which are chock-full of web function development minutia.
But if you want to get somewhere quickly check out the new wizards for generating Visual Studio projects for HyperQueries, Mobile Web, and BTO Posting type functions. These wizards allow you to describe your function in terms of Unidata file names and dictionaries, or in terms of Manage 2000 Business Transactions and then generate for you a working prototype with controls configured and named in useful ways and in some cases with extensive amounts of code-behind already plumbed out.
There are a couple of webex videos available under the Manage 2000 Web Presentations link above on the right. For Visual Studio Manage 2000 web function development knowledge check out Mastering ASP.NET 3.5 and VisualStudio2008 for Manage2000 Parts I and II.
There are a couple of webex videos available under the Manage 2000 Web Presentations link above on the right. For Visual Studio Manage 2000 web function development knowledge check out Mastering ASP.NET 3.5 and VisualStudio2008 for Manage2000 Parts I and II.
Labels:
ASP.NET,
Custom Code,
Software Development,
Web
Monday, September 17, 2012
Setting Up Mobile Access to Manage 2000 7.3 sp3
Manage 2000 7.3 sp3 mobile features are designed to run in webkit browsers such as Mobile Chrome or Mobile Safari. These are the built-in browsers for IPhones and many Android phones. The next major version of Manage 2000, currently under development, supports many other mobile device browsers.
To configure mobile users on Manage 2000 7.3 sp3:
Use CNT.SYSTEM.REFS to assign mobile
preferences for a web user role
For example on the SYSUSER role assign
MobileUser as the menu for system users
- Start CNT.SYSTEM.REFS
- Call up record SYSUSER
- Add a Preference Code of 25 Mobile Menu
- Set the value to MobileUser
- Add a Preference Code of 22 Mobile Stylesheet
- Set the value to mobile.css
- Add a Preference Code of 26 Mobile Items Per Page
- Set the value to 5
You may assign preference codes 22,
and 26 in WEB.CONSTANTS Default Web Preference settings instead of on each role
in CNT.SYSTEM.REFS since they are likely to be constant for all roles.
Use CNT.SYSTEM.REFS record CM to
assign preferences for customers accessing Manage 2000 via an externally facing
portal. The MobileCustomer menu can be used as the mobile menu.
Use CNT.SYSTEM.REFS record SLSREP to
assign preferences for sales representatitves accessing Manage 2000 via an
externally facing portal. The MobileSalesRep menu can be used as the mobile
menu.
Use CNT.SYSTEM.REFS record DEVELOPER
to assign preferences for developers or administrators. The MobileAdmin menu can
be used as the mobile menu.
Mobile devices are automatically detected. If the user has a mobile menu assigned and is accessing the site from a recognized mobile device then the user will be directed to a mobile login and from there to the M2000Mobile navigation app. The FullSite web function may be used to re-enter the site in non-mobile mode. Logging off the website and logging back in will place the mobile user back in mobile mode.
The a fore mentioned menus have been supplied as examples and starting points for configuring mobile access to Manage 2000 7.3 sp3. The mobile navigation options may be
modified in MENU.BUILD by changing the menu items. REPORT.BUILD web function
definitions may be used (See WEB.REPORT.BUILD for information on setting up
FN.BUILD entries to run REPORT.BUILD reports from the web). Web functions built
using the roiHyperQueryControl will also be optimized for mobile automatically, this includes about 65 standard Manage 2000 web functions.
While the desktop portal system is not yet available from this mobile navigation you can recover some of the portal feature by setting the Use Last Key As Default preference to Y. This will default in the last key used as users select different web functions from the mobile menu emulating the key integration you get from portals.
While the desktop portal system is not yet available from this mobile navigation you can recover some of the portal feature by setting the Use Last Key As Default preference to Y. This will default in the last key used as users select different web functions from the mobile menu emulating the key integration you get from portals.
There are about 220 Web functions that have not yet been optimized for mobile use in Manage 2000 7.3 sp3. They may be used, but will likely prove inconvenient for the user. The next major release of Manage 2000, currently under development, has all web functions and portals optimized for mobile.
Tuesday, August 28, 2012
Extending web portals by publishing REPORT.BUILD functions as web functions
Use FN.BUILD to create a web function that runs a specific REPORT.BUILD report from the web
Create a new item with a name that matches the REPORT.BUILD report function name without space or periods and with only the first letter of each word captialized; so an entry to run RCVNG.RPTS.BY.DATE would be called RcvngRptsByDate.
Set the Type to W to specify a web function.
The module should match the module where the REPORT.BUILD report function exists.
Enter a suitable description. Shorter descriptions are nicer on mobile devices.
End out of the first screen.
Enter an extended description.
The additional parameters prompt will bring up a new screen with web function specific prompts.
For Web URL enter the Url to the REPORT.BUILD report interpreter /mt/ReportBuildRpt/ReportBuildRpt.aspx
Add a Web Query Parameter to specifiy the library (module) that the report resides in.
Use ReportLibary for the parameter. Use your module for the value.
Add A Web Query Parameter to specify the REPORT Id that should be used to generate the web page. Use ReportID for the paramter. Use the actual REPORT.BUILD report id (The PWS report name) for the value.
End out of FN.BUILD.
Test your web version of the report by typing in the upper and lower case version of the report name at a Menu or from ECL.
This web function may now be added to a web or PWS menu in MENU.BUILD
![]() |
Note: In Release 8.1 this has been automated into the REPORT.BUILD function. Setting the Create Web Also flag to Y will create the corresponding FN.BUILD record for you.
Labels:
Administrator Tools,
Software Deployment,
Tailoring,
Web
Subscribe to:
Posts (Atom)






