%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/
Upload File :
Create Path :
Current File : //home/waritko/jetty-distribution-9.4.21.v20190926/webapps/ROOT/templates/createinline.vm

## ---------------------------------------------------------------------------------------------------------
## This template is called by the create action which binds some context variables as it executes, based on
## the request and the current document. These variables can be used in this template:
## * $spaceReference - the space reference of the new document, read from the "spaceReference" parameter
## * $name - the name to use for the new document, read from the "name" parameter
## * $isSpace - true if we are creating a non-terminal document ($name is the space name), false if we are
##              creating a terminal document ($name is the document name). Determined by the create action
## * $availableTemplateProviders - list of template provider documents available from the current space
##
## Note: Make sure to use these bindings instead of directly using the request parameters, as the bindings
## also consider backwards compatibility and convert older "space" and "page" parameters if they are passed.
## ---------------------------------------------------------------------------------------------------------

## ---------------------------------------------------------------------------------------------------------
## This template can be passed a parent document reference in parameter (using the "parent" parameter).
## If a parent parameter is passed, use it to set the parent when creating the new page.
## If no parent parameter was passed, the create action will determine it to be the current document if it
## exists or the Main space's webhome if the current document does not exist.
## ---------------------------------------------------------------------------------------------------------
#set ($parent = "$!request.getParameter('parent')")

## ---------------------------------------------------------------------------------------------------------
## This parent can be passed a title for the document to create (using the "title" parameter).
## The title is used to automatically compute a page name, which can then be customized by the user.
## If no title is given, the page name (if set) will be used as title.
## ---------------------------------------------------------------------------------------------------------
#if ("$!request.title" != '')
  #set ($title = "$!request.title")
#else
  #set ($title = "$!name")
#end

## ---------------------------------------------------------------------------------------------------------
## Get the passed template provider, if any
## ---------------------------------------------------------------------------------------------------------
#set($templateProvider = "$!request.templateprovider")
## Get the template as well, since in case template provider is missing, template should be used, 
## to allow creation from template directly, without necessarily going through template provider.
#set($template = "$!request.template")

## ---------------------------------------------------------------------------------------------------------
## If there was an exception creating the page because of invalid space, notify. 
## Should set the other variables only if there is no exception. Otherwise, if there's an exception other than the 
## 11016 one, nothing will be displayed, depending on the other passed parameters.
## ---------------------------------------------------------------------------------------------------------
#set($exception = $createException)
## check if the exception is about the non-allowed spaces for template
#if("$!exception" != '' && $exception.code == 11016)
  <div class="box errormessage">
    #set($allowedSpaces = $createAllowedSpaces)
    #if ($allowedSpaces.size() == 1)
      $services.localization.render('core.create.template.allowedspace.inline', [$templateProvider, $allowedSpaces.get(0)])
    #else
      $services.localization.render('core.create.template.allowedspaces.inline', [$templateProvider, $allowedSpaces.toString()])
    #end
  </div>
#end
## check if the exception is about the document which already exists
#if("$!exception" != '' && $exception.code == 11002)
  <div class='box errormessage'>
      ## Use the 'existingDocumentReference' context binding set by the create action for this case.
      $services.localization.render('core.create.page.error.docalreadyexists',
        ["${existingDocumentReference}",
         $xwiki.getURL($existingDocumentReference, 'view', ''),
         $xwiki.getURL($existingDocumentReference, 'edit', '')
        ]
      )
  </div>
#end
## check if the exception is about the document having a path too long
#template('hierarchy_macros.vm')
#if("$!exception" != '' && $exception.code == 11017)
  #set ($options = {})
  #set ($documentReference = $services.model.resolveDocument($tooLongPath))
  <div class='box errormessage'>
      $services.localization.render('core.create.page.error.docpathtoolong',
        ["<p>#hierarchy($documentReference, $options)</p>",
          $doc.getLocalReferenceMaxLength(),
          $tooLongPath.length()
        ]
      )
  </div>
#end

## ---------------------------------------------------------------------------------------------------------
## Determine if we need to do extra checks for a deprecated, pre-NestedSpaces request to create a space.
## ---------------------------------------------------------------------------------------------------------
#set ($deprecatedSpaceCreate = "$!request.tocreate" == 'space')

## ---------------------------------------------------------------------------------------------------------
## Note: The list of available template providers is computed in the action and set on the context under
## the "availableTemplateProviders" binding.
## ---------------------------------------------------------------------------------------------------------

## ---------------------------------------------------------------------------------------------------------
## Macro for displaying the available types and templates and changing target space rules accordingly
## ---------------------------------------------------------------------------------------------------------
#macro (displayTypes)
  #if ($template == '')
    #set ($blankTerminalState = !$isSpace)
    #set ($options = [
      { 
        'name': $services.localization.render('core.create.type.default'),
        'options': [
          {
            'name': $services.localization.render('core.create.type.blank'),
            'value': 'blank',
            'description': $services.localization.render('core.create.type.blank.description'),
            'icon': 'file-white',
            'data': {
              'type': 'blank',
              'terminal' : "$blankTerminalState"
            }
          }
        ]
      }])
    #if ($xwiki.exists($services.model.createDocumentReference('', 'XWiki', 'OfficeImporter')) && "$!services.officemanager.serverState" == 'Connected')
      ## TODO: handle this use case with an extension point
      #set ($discard = $options[0].options.add({
        'name': $services.localization.render('office.createForm.type.name'),
        'value': 'office',
        'description': $services.localization.render('office.createForm.type.description'),
        'icon': 'file-word',
        'data': {
          'type':'office'
        }
      }))
    #end
    #if (!$availableTemplateProviders.isEmpty())
      #set ($templateOptions = [])
      #set ($discard = $options.add({'name': $services.localization.render('core.create.type.templates'), 'options': $templateOptions}))
      #foreach($tpdoc in $availableTemplateProviders)
        #set ($tpobj = $tpdoc.getObject('XWiki.TemplateProviderClass'))
        #set ($tpdocRef = $services.model.serialize($tpdoc.documentReference, 'local'))
        ##
        ## Extract and save in data-* attributes list of allowed spaces to be used in the JavaScript validation of the spaceReference input.
        ##
        #set($jsAllowedSpacesArray = '[]')## Reset any previous value
        #set($allowedSpaces = $tpobj.getValue('creationRestrictions'))
        #if($allowedSpaces.size() == 0)
          ## Backwards compatibility for Template Providers created before 8.3M2.
          #set($allowedSpaces = $tpobj.getValue('spaces'))
        #end
        ## Reset to an empty list when no restrictions are set.
        #if ("$!allowedSpaces" == '')
          #set ($allowedSpaces = [])
        #end
        #if($allowedSpaces.size() > 0)
          #set($jsAllowedSpacesArray = $jsontool.serialize($allowedSpaces))
        #end
        ## Compute the error message.
        #set ($templateProviderName = $services.localization.render($tpobj.getValue('name')))
        #if($allowedSpaces.isEmpty())
          #set($message = '')
        #elseif($allowedSpaces.size() == 1)
          #set($message = $services.localization.render('core.create.template.allowedspace.inline', [$templateProviderName, $jsAllowedSpacesArray]))
        #else
          #set($message = $services.localization.render('core.create.template.allowedspaces.inline', [$templateProviderName, $jsAllowedSpacesArray]))
        #end
        ##
        ## Determine if the creation restrictions are just suggestions
        ##
        #set ($restrictionsAreSuggestions = ($tpobj.getValue('creationRestrictionsAreSuggestions') == 1))
        ##
        ## Determine if it's a terminal page template
        ##
        #set ($isTerminalProvider = $tpobj.getValue('terminal'))
        ## Check if this is an old template provider that has not been migrated (the 'type' property has not been
        ## replaced by the 'terminal' property).
        #set ($type = $tpobj.getValue('type'))
        #if ("$!isTerminalProvider" == '' && ("$!type" != '' || $type == ''))
          ## This must be an old template provider because the 'terminal' property is not set (or it was set to '---'
          ## from the UI) and the 'type' property is still present.
          #if ($type == 'space')
            #set ($isTerminalProvider = false)
          #else
            ## 'page' or '' both resolve to true, for backwards compatibility reasons.
            #set ($isTerminalProvider = true)
          #end
        #else
          #set ($isTerminalProvider = ($isTerminalProvider == 1))
        #end
        ##
        ## Display the template provider field option in the form.
        ##
        #set ($inputId = "xwiki-create-form-${velocityCount}")
        #set ($icon = $tpobj.getValue('icon'))
        #if ("$!icon" == '')
          #set($icon = 'file-white')
        #end
        #set ($discard = $templateOptions.add({
          'name': $services.localization.render($tpobj.getValue('name')),
          'value': "$tpdocRef",
          'description': $services.localization.render($tpobj.getValue('description')),
          'icon': $icon,
          'data': {
            'allowed-spaces': $jsAllowedSpacesArray,
            'allowed-spaces-message': $message,
            'restrictions-are-suggestions': $restrictionsAreSuggestions,
            'type': 'template',
            'terminal' : $isTerminalProvider
          }
        }))
      #end
    #end
    <dt>
      <label>$services.localization.render('core.create.type')</label>
      <span class="xHint">$escapetool.xml($services.localization.render('core.create.type.hint'))</span>
    </dt>
    #set ($defaultValue = $request.type)
    #if ("$!defaultValue" == '')
      #if ($recommendedTemplateProviders.size() > 0)
        #set ($defaultValue = $services.model.serialize($recommendedTemplateProviders[0].documentReference, 'local'))
      #else
        #set ($defaultValue = 'blank')
      #end
    #end
    <dd>#xwikiSelect('type', $options, $defaultValue, false, 'xwiki-select-adaptable-medium', '', true)</dd>
  #else
    <input type="hidden" name="template" value="$escapetool.xml($template)" />
  #end
#end
#set ($discard = $xwiki.jsfx.use('js/xwiki/create.js', {'forceSkinAction': true}))

## ---------------------------------------------------------------------------------------------------------
## Macro used to extract a wiki's homepage reference.
## ---------------------------------------------------------------------------------------------------------
#macro (getWikiHomePageReference $wiki $return)
  #set ($_wikiHomePageReference = $services.wiki.getById($wiki).mainPageReference)
  #if (!$_wikiHomePageReference)
    #set ($wikiReference = $services.model.createWikiReference($wiki))
    #set ($_wikiHomePageReference = $services.model.resolveDocument('', 'default', $wikiReference))
  #end
  #set ($return = $NULL)
  #setVariable("$return" $_wikiHomePageReference)
#end

## ---------------------------------------------------------------------------------------------------------
## Display the form.
## ---------------------------------------------------------------------------------------------------------
## FIXME: Using the 'container' class when displayed in an ajax call by clicking on a Wanted Link so that it looks good (proper margins) in the popup.
<form action="$doc.getURL('create')" method="post" id="create" class="xform #if($request.ajax)container#end">

  ## Deprecated: Pass along any received page parent.
  <input type='hidden' name='parent' value="$!{escapetool.xml($parent)}"/>

  ## The "templateprovider" field is needed by the CreateAction, even empty.
  ## By the past, it was "xwiki/create.js" which created this field, but it was causing problems when the user sent the
  ## form before the JavaScript code was executed.
  <input type="hidden" name="templateprovider" id="templateprovider" value="" />

  <div class='row'>
    ## Hide the first column when displayed in an AJAX call by clicking on a Wanted Link (because we know the target
    ## location from the link reference) or when the current document is new (because the create action uses the location
    ## of the current document as target in this case).
    #if (!$request.ajax && !$doc.isNew())
      ## Determine the parent reference for the new document.
      #set ($parentReference = $spaceReference)
      #if (!$parentReference)
        ## No parent reference specified.
        ## We keep this code although we tested above that the current document is not new because in the future we may
        ## want to support changing the target location even if the current document is new.
        #if ($doc.isNew())
          ## Encourage the user to create the current document.
          #set ($parentReference = $doc.documentReference.parent)
          #if ($doc.documentReference.name == 'WebHome')
            #set ($parentReference = $parentReference.parent)
          #end
        #else
          #getWikiHomePageReference($doc.wiki $homeReference)
          #if ($doc.documentReference.equals($homeReference) || $deprecatedSpaceCreate)
            ## Encourage the user to create top level documents from the home page.
            #set ($parentReference = $doc.documentReference.wikiReference)
          #else
            ## Encourage the user to create a child or sibling of the current document.
            #set ($parentReference = $doc.documentReference.lastSpaceReference)
          #end
        #end
      #end

      ## Display the location picker.
      <div class='col-xs-12 col-lg-6'>
        #template('locationPicker_macros.vm')
        #locationPicker({
          'id': 'target',
          'title': {
            'label': 'core.create.title',
            'hint': 'core.create.title.hint',
            'name': 'title',
            'value': $title,
            'placeholder': 'core.create.name.placeholder'
          },
          'preview': {
            'label': 'core.create.locationPreview.label',
            'hint': 'core.create.locationPreview.hint'
          },
          'parent': {
            'label': 'core.create.spaceReference.label',
            'hint': 'core.create.spaceReference.hint',
            'name': 'spaceReference',
            'reference': $parentReference,
            'placeholder': 'core.create.spaceReference.placeholder'
          },
          'name': {
            'label': 'core.create.name.label',
            'hint': 'core.create.name.hint',
            'name': 'name',
            'value': $name,
            'placeholder': 'core.create.name.placeholder'
          }
        })
      </div>
    #else
      ## First column is hidden.
      ## Pass along the known values as hidden inputs.
      ##
      <input type='hidden' name='title' value="$!{escapetool.xml($title)}"/>
      <input type='hidden' id='name' name='name' value="$!{escapetool.xml($name)}" />
      #set ($spaceReferenceLocalString = $services.model.serialize($spaceReference, 'local'))
      <input type='hidden' id='spaceReference' name='spaceReference' value="$!{escapetool.xml($spaceReferenceLocalString)}" />
    #end
    ## FIXME: When displayed in an ajax call by clicking on a Wanted Link, the responsive classes consider the calling document (large screen)
    ## as the viewport and not the popup (small screen), so we can not use them since they create problems instead of fixing them.
    <div class='#if(!$request.ajax)col-xs-12 col-lg-6#end'>
      <dl>
        ## ---------------------------------------------------------------------------------------------------------
        ## Page type
        ## ---------------------------------------------------------------------------------------------------------
        #displayTypes()
        ## ---------------------------------------------------------------------------------------------------------
        ## Terminal page - Advanced users
        ## ---------------------------------------------------------------------------------------------------------
        #set ($hidden = '')
        #if (!($isAdvancedUser || $isSuperAdmin) || $deprecatedSpaceCreate)
          #set ($hidden = 'hidden')
        #end
        <dt class="$hidden">
          <input type="checkbox" id="terminal" name="tocreate" value="terminal" #if(!$isSpace)checked="checked"#end/>
          <label for="terminal">$services.localization.render('core.create.terminal.label')</label>
          ## Hidden input used to ensure that an unchecked terminal checkbox means non-terminal and that the default is not used by mistake.
          <input type="hidden" name="tocreate" value="nonterminal" />
        </dt>
        <dd class="$hidden">
          <span class="xHint">$services.localization.render('core.create.terminal.hint')</span>
        </dd>
      </dl>
    </div>
  </div>

  <div class='buttons'>
    <span class='buttonwrapper'>
      <input type='submit' class='button' value="$services.localization.render('create')"/>
    </span>
    <span class="buttonwrapper">
      <a class="secondary button" href="$doc.getURL()">$services.localization.render('cancel')</a>
    </span>
  </div>

</form>

Zerion Mini Shell 1.0