Access Keys:
Skip to content (Access Key - 0)
<!--page.vmd--> <div id="content" class="page view"> <fieldset id="link-to-page-fields" class="hidden parameters"> <input type="hidden" id="linkToThisPageHeading" value="Link to this Page"> <input type="hidden" id="linkToThisPageLink" value="Link"> <input type="hidden" id="linkToThisPageTinyLink" value="Tiny Link"> <input type="hidden" id="linkToThisPageWikiMarkup" value="Wiki Markup"> <input type="hidden" id="linkToThisPageClose" value="Close"> </fieldset> <fieldset class="hidden parameters"> <input type="hidden" title="movePageDialogViewPageTitle" value="Move Page &ndash; &#8216;Start Developing&#8217;"> <input type="hidden" title="movePageDialogEditPageTitle" value="Set Page Location"> <input type="hidden" title="movePageDialogMoveButton" value="Move"> <input type="hidden" title="movePageDialogOkButton" value="OK"> <input type="hidden" title="movePageDialogCancelButton" value="Cancel"> <input type="hidden" title="movePageDialogBrowsePanelTip" value="Click to select the new parent page for this page and its children."> <input type="hidden" title="movePageDialogSearchPanel" value="Search"> <input type="hidden" title="movePageDialogHistoryPanel" value="Recently Viewed"> <input type="hidden" title="movePageDialogHistoryNoResults" value="There were no recently viewed pages found."> <input type="hidden" title="movePageDialogLocationPanel" value="Known Location"> <input type="hidden" title="movePageDialogLocationNotFound" value="The specified page was not found."> <input type="hidden" title="movePageDialogBrowsePanel" value="Browse"> <input type="hidden" title="movePageDialogPanelLoadErrorMsg" value="Error reading the panel content from the server."> <input type="hidden" title="movePageDialogPanelLoadErrorTip" value="You could try reloading the page and launching the dialog again."> <input type="hidden" title="movePageDialogPanelLoadErrorStatus" value="HTTP Status"> <input type="hidden" title="movePageDialogNoSelectionErrorMsg" value="You must make a selection in the tree before you can move the page."> <input type="hidden" title="movePageDialogSearchError" value="Failed to retrieve search results from the server."> <input type="hidden" title="movePageDialogSearchNoResults" value="There were no pages found containing <b>{0}</b>."> <input type="hidden" title="movePageDialogSearchResultCount" value="Showing <b>{0}</b>-<b>{1}</b> of <b>{2}</b> pages containing <b>{3}</b>."> <input type="hidden" title="movePageDialogMoveFailed" value="Move failed. There was a problem contacting the server."> <input type="hidden" title="movePageDialogCannotChangeSpace" value="You cannot move this page to another space because you do not have permission to remove it from this space."> <input type="hidden" title="pageTitle" value="Start Developing"/> <input type="hidden" title="parentPageTitle" value="Building Blocks"/> <input type="hidden" title="fromPageTitle" value=""/> <input type="hidden" title="spaceKey" value="BBDN"/> <input type="hidden" title="spaceName" value="EduGarage (Blackboard Developers Network)"/> <input type="hidden" title="movePageDialogInvalidLocation" value="You cannot move a page to be underneath itself or its children."/> <input type="hidden" title="movePageDialogOrderingTitle" value="Page Ordering"/> <input type="hidden" title="movePageDialogBackButton" value="Back"/> <input type="hidden" title="movePageDialogMoveAndOrderButton" value="Reorder"/> <input type="hidden" title="movePageDialogNextButton" value="Move"/> </fieldset> <script type="text/x-template" title="movePageDialog"> <div class="row information"> Specify the new parent page for this page and its children by space and title. </div> <div class="form"> <fieldset> <legend class="assistive"><span>Change the Parent Page to a Known Page</span></legend> <div class="row"> <label for="new-space">New space:</label> <div class="value new-space-value"> <input id="new-space-key" name="new-space-key" type="hidden" value="BBDN"> <span class="space-input"> <input id="new-space" name="new-space" value="EduGarage (Blackboard Developers Network)" disabled="disabled"> </span> <span class="description warning">You cannot move this page to another space because you do not have permission to remove it from this space.</span> <div class="new-space-dropdown aui-dd-parent"></div> </div> </div> <div class="row"> <label for="new-parent-page">New parent page:</label> <div class="value new-parent-page-value"> <span class="page-input"> <input id="new-parent-page" name="new-parent-page" value="Building Blocks"> </span> <span class="description">Start typing a page title to see a list of suggestions.</span> <div class="new-parent-page-dropdown aui-dd-parent autocomplete"></div> </div> </div> </fieldset> </div> <div class="location-info"> <div class="row"> <label>Current location:</label> <div class="value breadcrumbs-container"> <div class="breadcrumbs-line"> <ul id="current-parent-breadcrumbs" class="breadcrumbs"> </ul> </div> </div> </div> <div class="row"> <label>New location:</label> <div class="value breadcrumbs-container"> <div class="breadcrumbs-line"> <ul id="new-parent-breadcrumbs" class="breadcrumbs"> </ul> </div> </div> </div> </div> </script> <script type="text/x-template" title="movePageErrors"> <div id="move-errors" class="hidden warning"></div> </script> <script type="text/x-template" title="movePageBreadcrumb"> <li><a class="{2}" title="{3}" tabindex="-1"><span>{0}</span></a></li> </script> <script type="text/x-template" title="movePageBreadcrumbLoading"> <li class="loading"><span>Loading breadcrumbs&hellip;</span></li> </script> <script type="text/x-template" title="movePageBreadcrumbError"> <li class="warning last"><span>Error retrieving breadcrumbs.</span></li> </script> <script type="text/x-template" title="movePageNoMatchingPages"> <ol><li><span class="warning">No matching pages found.</span></li></ol> </script> <script type="text/x-template" title="movePageNoMatchingSpaces"> <ol><li><span class="warning">No matching spaces found.</span></li></ol> </script> <script type="text/x-template" title="movePageSearchPanel"> <div class="row information"> Search for and select the new parent page for this page and its children. </div> <div id="move-page-search-container" class="row"> <div class="search-form"> <fieldset> <legend class="assistive"><span>Search for a New Parent Page</span></legend> <label for="move-page-search-query" class="assistive">Search keywords</label> <input class="search-query" id="move-page-search-query"> <label for="move-page-search-space" class="assistive">Search in space</label> <select id="move-page-search-space" class="search-space" disabled="disabled"> <option value="BBDN" selected="selected">EduGarage (Blackboard Developers Network)</option> </select> <input type="button" value="Search"> <div class="description warning">You cannot move this page to another space because you do not have permission to remove it from this space.</div> </fieldset> </div> <div class="search-results"> </div> </div> </script> <script type="text/x-template" title="movePageSearchResultsLoading"> <div class="searching">Searching…</div> </script> <script type="text/x-template" title="movePageHistoryPanel"> <div class="row information"> Select the new parent page for this page and its children from your history. </div> <div id="move-page-search-container" class="row"> <div class="search-results"> </div> </div> </script> <script type="text/x-template" title="movePageHistoryLoading"> <div class="searching">Loading…</div> </script> <script type="text/x-template" title="movePageBrowsePanel"> <div class="row information"> Click to select the new parent page for this page and its children. </div> <div class="tree"></div> </script> <script type="text/x-template" title="movePagePanelLoading"> <span>Loading…</span> </script> <script type="text/x-template" title="movePageBrowsePanelSpace"> <ul><li id='tree-root-node-item' class='root-node-list-item'><a class='root-node' href='#'>{0}</a></li></ul> </script> <script type="text/x-template" title="orderingPagePanel"> <div id="orderingPlaceHolder"></div> </script> <script type="text/x-template" title="reorderCheckbox"> <span id="reorderRequirement"><input id="reorderCheck" type="checkbox" name="reorderFlag" title="Choose the position of this page within the list of child pages."/><label for="reorderCheck" title="Choose the position of this page within the list of child pages.">Reorder</label></span> </script> <script type="text/x-template" title="move-help-link"> <div class="dialog-help-link"> <a href="http://docs.atlassian.com/confluence/docs-33/Moving+a+Page" target="_blank">Help</a> </div> </script> <!-- Start restrictions section --> <fieldset class="hidden parameters i18n"> <input type="hidden" id="i18n.page.perms.error.invalid.entity.names" value="Unknown user or group:"> <input type="hidden" id="i18n.page.perms.dialog.heading" value="Page Restrictions"> <input type="hidden" id="i18n.page.perms.editing.restricted.to" value="Editing restricted to:"> <input type="hidden" id="i18n.cancel.name" value="Cancel"> <input type="hidden" id="i18n.close.name" value="Close"> <input type="hidden" id="i18n.update.name" value="Save"> </fieldset> <script type="text/x-template" title="page-permissions-div"> <div id="page-permissions-div"> <div id="page-permissions-editor-form"> <div id="page-permissions-error-div" class="hidden"> <a href="#" id="permissions-error-div-close">Ok</a> <div></div> </div> <div id="page-permissions-type-radios" class="page-permissions-label-rows"> <div> <input id="restrictViewRadio" type="radio" checked="checked" name="pagePermissionTypeRadio" value="view"/> <label for="restrictViewRadio">Restrict viewing of this page</label> <input id="restrictEditRadio" type="radio" name="pagePermissionTypeRadio" value="edit"/> <label for="restrictEditRadio">Restrict editing of this page</label> </div> </div> <div id="page-permissions-input" class="page-permissions-label-rows"> <div class="page-permissions-label">To:</div> <div id="page-permissions-chooser-box"> <span id="page-permissions-choose-user" class="ajs-button"> <a href="#" id='userpicker-popup-link-image' onClick="var picker = window.open('/spaces/openuserpicker.action?key=BBDN&amp;startIndex=0&amp;onPopupSubmit=AJS.PagePermissions.addUserPermissions', 'EntitiesPicker', 'status=yes,resizable=yes,top=100,left=200,width=700,height=680,scrollbars=yes'); picker.focus(); return false;"><img src="/s/1911/39/_/images/icons/user_16.gif" height=16 width=16 border=0 align="absmiddle" title="Choose users" /></a> <a href="#" id='userpicker-popup-link-text' onClick="var picker = window.open('/spaces/openuserpicker.action?key=BBDN&amp;startIndex=0&amp;onPopupSubmit=AJS.PagePermissions.addUserPermissions', 'EntitiesPicker', 'status=yes,resizable=yes,top=100,left=200,width=700,height=680,scrollbars=yes'); picker.focus(); return false;">Person...</a> </span> <span id="page-permissions-choose-group" class="ajs-button"> <a href="#" id='grouppicker-popup-link-image' onClick="var picker = window.open('/spaces/opengrouppicker.action?key=BBDN&amp;startIndex=0&amp;actionName=dosearchgroups.action&amp;onPopupSubmit=AJS.PagePermissions.addGroupPermissions', 'EntitiesPicker', 'status=yes,resizable=yes,top=100,left=200,width=580,height=550,scrollbars=yes'); picker.focus(); return false;"><img src="/s/1911/39/_/images/icons/group_16.gif" height=16 width=16 border=0 align="absmiddle" title="Choose groups" /></a> <a href="#" id='grouppicker-popup-link-text' onClick="var picker = window.open('/spaces/opengrouppicker.action?key=BBDN&amp;startIndex=0&amp;actionName=dosearchgroups.action&amp;onPopupSubmit=AJS.PagePermissions.addGroupPermissions', 'EntitiesPicker', 'status=yes,resizable=yes,top=100,left=200,width=580,height=550,scrollbars=yes'); picker.focus(); return false;">Group...</a> </span> </div> <div id="page-permissions-input-box"> <span> <input type="text" id="page-permissions-names-input" class="input-placeholder" value="Enter user or group name" name="permissionNames" size="30" autocomplete="off"/> </span> <input type="hidden" id="page-permissions-names-hidden" /> <img height="16px" width="1px" src="/s/1911/39/_/images/border/spacer.gif"/> <input type="button" id="add-typed-names" value="Restrict"> </div> </div> </div> <div id="page-permissions-tables"> <div id="page-permissions-table-div"> <table id="page-permissions-table" class="page-permissions-table"> <tr id="page-permissions-no-views" class="marker-row"> <td colspan="3" class="page-permissions-marker-cell"><span>No view restrictions are defined for this page</span></td> </tr> <tr id="page-permissions-no-edits" class="marker-row"> <td colspan="3" class="page-permissions-marker-cell"><span>No edit restrictions are defined for this page</span></td> </tr> </table> </div> <div id="page-inherited-permissions-table-div" class="hidden"> <span id="page-inherited-permissions-table-desc"> <a class="icon twisty-closed">Show/Hide</a> <a id="toggle-inherited-permissions" title="Click to see inherited restrictions">This page has restricted parent pages. It can only be seen by users who can see those parent pages.</a> </span> <div id="page-inherited-permissions-tables" class="hidden page-inheritance-togglable"></div> </div> </div> </div> </script> <script type="text/x-template" title="permissions-row-template"> <tr class="permission-row"> <td class="page-permissions-marker-cell" width="20%"> <span>Viewing restricted to:</span> </td> <td class="permission-entity" nowrap="true" width="40%"> <span class="entity-container"> <img class="permission-entity-picture"/> <span class="permission-entity-display-name"></span> <span class="permission-entity-name-wrap">&nbsp;(<span class="permission-entity-name"></span>)</span> </span> </td> <td class="permission-detail-column"> <div class="permission-remove-div"> <a href="#" class="remove-permission-link">Remove restriction</a> </div> </td> </tr> </script> <script type="text/x-template" title="permissions-username-no-suggestion-template"> <ol> <li><a href="#" class="message"><span>No matches</span></a></li> </ol> </script> <script type="text/x-template" title="page-inherited-permissions-table-div-template"> <div class="page-inherited-permissions-owner-div"> <div class="page-inherited-permissions-table-desc">Viewing restrictions apply to “<a></a>”. In order to see “<span></span>”, a user must be in the following list of users and groups:</div> <table class="page-permissions-table"></table> </div> </script> <script type="text/x-template" title="page-restrictions-help-link"> <div class="dialog-help-link"> <a href="http://docs.atlassian.com/confluence/docs-33/Page+Restrictions" target="_blank">Help</a> </div> </script> <!-- End restrictions section --> <fieldset class="hidden parameters"> <input type="hidden" title="browsePageTreeMode" value="view"> </fieldset> <div class="wiki-content"> <!-- wiki content --> <p><span class="image-wrap" style=""><img src="/download/attachments/72810882/line.gif?version=1&amp;modificationDate=1310107182907" style="border: 0px solid black" /></span></p> <h3><a name="StartDeveloping-YourfirstBuildingBlock"></a>Your first Building Block</h3> <p>Although you may be tempted to start coding in your favorite text editor, we recommend that you start with an IDE like Eclipse. Learn how to get started with Eclipse by watching <a href="/display/BBDN/Your+first+Building+Blocks+project+using+Eclipse" title="Your first Building Blocks project using Eclipse">this screencast</a>. Blackboard also offers a <a href="/display/BBDN/Building+Blocks+Eclipse+Plugin" title="Building Blocks Eclipse Plugin">plugin for Eclipse</a> which makes developing your first Building Block easy.</p> <h3><a name="StartDeveloping-Seekinghelpandadvice"></a>Seeking help and advice</h3> <p>As you progress with your development tasks, you may find yourself wanting to ask advice of fellow developers. If you have an account for this site, you can post your question to the <a href="http://forums.edugarage.com" class="external-link" rel="nofollow">eduGarage forums</a>. Additionally, the <a href="http://lists.vcu.edu/cgi-bin/wa?A0=BB-OPEN_SRC" class="external-link" rel="nofollow">developers listserv</a> is quite active and has helpful searchable archives.</p> <h3><a name="StartDeveloping-Automatingdevelopment"></a>Automating development</h3> <p>Once you get good at the basics, you'll quickly learn that building your project and manually installing it can become a time-consuming process. To address this, Blackboard provides a developer tool called the <a href="/display/BBDN/Starter+Building+Block+Readme" title="Starter Building Block Readme">Starter Block</a> that automates building and deploying your Building Block to your Blackboard development server.</p> <p>As you progress into more advanced programming, you may want to connect directly to the Tomcat instance that runs Blackboard to pause your code while it's running or see what causes an error in real-time. To do so requires <a href="/display/BBDN/Debugging" title="Debugging">turning debugging on</a>.</p> <h3><a name="StartDeveloping-QAandversioning"></a>QA and versioning</h3> <p>Blackboard provides a tool to provide general guidance on the compatibility of your Building Block with a given version of Blackboard. <a href="/display/BBDN/QA+and+Versioning" title="QA and Versioning">Find out more about it</a>.</p> <h3><a name="StartDeveloping-SampleCode"></a>Sample Code</h3> <p>Please be aware that Blackboard provides <a href="/display/BBDN/Sample+Code" title="Sample Code">sample code</a> for many popular types of Building Blocks projects.</p> <h3><a name="StartDeveloping-CodeQualityInitiative"></a>Code Quality Initiative</h3> <p>The <a href="http://www.edugarage.com/display/BBDN/Code%20Quality%20Initiative" class="external-link" rel="nofollow">Code Quality Initiative</a> is where we will post tips a tricks to maintaining code quality.</p> </div> <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://kb.blackboard.com/display/BBDN/Start+Developing" dc:identifier="http://kb.blackboard.com/display/BBDN/Start+Developing" dc:title="Start Developing" trackback:ping="http://kb.blackboard.com/rpc/trackback/72810882"/> </rdf:RDF> --> </div> <fieldset class="hidden parameters"> <input type="hidden" id="i18n.manage.watchers.dialog.title" value="Manage Watchers"> <input type="hidden" id="i18n.manage.watchers.unable.to.remove.error" value="Failed to remove watcher. Refresh page to see latest status."> <input type="hidden" id="i18n.manage.watchers.status.adding.watcher" value="Adding watcher&amp;hellip;"> </fieldset> <script type="text/x-template" title="manage-watchers-dialog"> <div class="dialog-content"> <div class="column page-watchers"> <h3>Watching this page</h3> <p class="description">These people are notified when the page is changed. You can add or remove people from this list.</p> <form action="/json/addwatch.action" method="POST"> <input type="hidden" name="atl_token" value="PwLEOIQthl"> <input type="hidden" name="pageId" value="72810882"/> <input type="hidden" id="add-watcher-username" name="username" value=""/> <label for="add-watcher-user">User</label> <input id="add-watcher-user" name="userFullName" type="search" class="has-placeholder autocomplete-user" value="" placeholder="Full name or username" autocomplete="off" data-max="10" data-target="#add-watcher-username" data-dropdown-target="#add-watcher-dropdown" data-template="{title}" data-none-message="No matching users found."> <input id="add-watcher-submit" type="submit" name="add" value="Add"> <div id="add-watcher-dropdown" class="aui-dd-parent autocomplete"></div> <div class="status hidden"></div> </form> <ul class="user-list"> <li class="loading">Loading&hellip;</li> <li class="no-users hidden">No page watchers</li> </ul> </div> <div class="column space-watchers"> <h3>Watching this space</h3> <p class="description">These people are notified when any content in the space is changed. You cannot modify this list.</p> <ul class="user-list"> <li class="loading">Loading&hellip;</li> <li class="no-users hidden">No space watchers</li> </ul> </div> </div> </script> <script type="text/x-template" title="manage-watchers-user"> <li class="watch-user"> <img class="profile-picture confluence-userlink" src="{iconUrl}" data-username="{username}"> <a class="confluence-userlink" href="{url}" data-username="{username}">{fullName} <span class="username">({username})</span></a> <span class="remove-watch" title="Remove" data-username="{username}">Remove</span> </li> </script> <script type="text/x-template" title="manage-watchers-help-link"> <div class="dialog-help-link"> <a href="http://docs.atlassian.com/confluence/docs-33/Managing+Watchers" target="_blank">Help</a> </div> </script> <!--END page.vmd-->
Adaptavist Theme Builder (4.1.3) Powered by Atlassian Confluence 3.3, the Enterprise Wiki