Merge Special:Filepath to the core
authorVictor Vasiliev <vasilievvv@users.mediawiki.org>
Fri, 1 Feb 2008 20:05:20 +0000 (20:05 +0000)
committerVictor Vasiliev <vasilievvv@users.mediawiki.org>
Fri, 1 Feb 2008 20:05:20 +0000 (20:05 +0000)
includes/SpecialFilepath.php [new file with mode: 0644]
includes/SpecialPage.php
languages/messages/MessagesEn.php
maintenance/language/messages.inc

diff --git a/includes/SpecialFilepath.php b/includes/SpecialFilepath.php
new file mode 100644 (file)
index 0000000..4ba8fdb
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+function wfSpecialFilepath( $par ) {
+       global $wgRequest, $wgOut;
+
+       $file = isset( $par ) ? $par : $wgRequest->getText( 'file' );
+
+       $title = Title::newFromText( $file, NS_IMAGE );
+
+       if ( ! $title instanceof Title || $title->getNamespace() != NS_IMAGE ) {
+               $cform = new FilepathForm( $title );
+               $cform->execute();
+       } else {
+               $file = wfFindFile( $title );
+               if ( $file && $file->exists() ) {
+                       $wgOut->redirect( $file->getURL() );
+               } else {
+                       $wgOut->setStatusCode( 404 );
+                       $cform = new FilepathForm( $title );
+                       $cform->execute();
+               }
+       }
+}
+
+class FilepathForm {
+       var $mTitle;
+
+       function FilepathForm( &$title ) {
+               $this->mTitle =& $title;
+       }
+
+       function execute() {
+               global $wgOut, $wgTitle, $wgScript;
+
+               $wgOut->addHTML(
+                       wfElement( 'form',
+                               array(
+                                       'id' => 'specialfilepath',
+                                       'method' => 'get',
+                                       'action' => $wgScript,
+                               ),
+                               null
+                       ) .
+                               wfHidden( 'title', $wgTitle->getPrefixedText() ) .
+                               wfOpenElement( 'label' ) .
+                                       wfMsgHtml( 'filepath-page' ) .
+                                       ' ' .
+                                       wfElement( 'input',
+                                               array(
+                                                       'type' => 'text',
+                                                       'size' => 25,
+                                                       'name' => 'file',
+                                                       'value' => is_object( $this->mTitle ) ? $this->mTitle->getText() : ''
+                                               ),
+                                               ''
+                                       ) .
+                                       ' ' .
+                                       wfElement( 'input',
+                                               array(
+                                                       'type' => 'submit',
+                                                       'value' => wfMsgHtml( 'filepath-submit' )
+                                               ),
+                                               ''
+                                       ) .
+                               wfCloseElement( 'label' ) .
+                       wfCloseElement( 'form' )
+               );
+       }
+}
index dbc8be7..3be70ee 100644 (file)
@@ -144,6 +144,7 @@ class SpecialPage
                'Unusedtemplates'           => array( 'SpecialPage', 'Unusedtemplates' ),
                'Randomredirect'            => 'SpecialRandomredirect',
                'Withoutinterwiki'          => array( 'SpecialPage', 'Withoutinterwiki' ),
+               'Filepath'                  => array( 'SpecialPage', 'Filepath' ),
 
                'Mypage'                    => array( 'SpecialMypage' ),
                'Mytalk'                    => array( 'SpecialMytalk' ),
index 86b2426..3d0be17 100644 (file)
@@ -425,6 +425,7 @@ $specialPageAliases = array(
        'Resetpass'                 => array( 'Resetpass' ),
        'Withoutinterwiki'          => array( 'Withoutinterwiki' ),
        'MergeHistory'              => array( 'MergeHistory' ),
+       'Filepath'                  => array( 'Filepath' ),
 );
 
 /**
@@ -3150,4 +3151,12 @@ $1',
 'version-hook-name'                => 'Hook name',
 'version-hook-subscribedby'        => 'Subscribed by',
 'version-version'                  => 'Version',
+
+# Special:Filepath
+'filepath'         => 'File path',
+'filepath-page'    => 'File:',
+'filepath-submit'  => 'Path',
+'filepath-summary' => 'This special page returns the complete path for a file. Images are shown in full resolution, other file types are started with their associated program directly.
+
+Enter the file name without the "{{ns:image}}:" prefix.',
 );
index 1409f16..1276b87 100644 (file)
@@ -2362,6 +2362,12 @@ $wgMessageStructure = array(
                'version-hook-subscribedby',
                'version-version',
        ),
+       'filepath' => array(
+               'filepath',
+               'filepath-page',
+               'filepath-submit',
+               'filepath-summary'
+       ),
 );
 /** Comments for each block */
 $wgBlockComments = array(