Hi,
Note: it's quick and dirty :)
I needed to customize the "Select" button's view to match UI, it should have had:
1)only button, no 'fake' file input, no file list, nothing, only immediate 1 file upload (to set current picture)
2)round corners
3)different style when hovered
4)resize to match inner text when site's language is changed
Note: when button is hovered in browsers that support Flash/Silverlight cursor doesn't change to 'pointer' type, but does in IE 64-bit.
I didn't investigate much, simple setting cursor: pointer !important; didn't do the trick (admins, any ideas?)
Ok, you will need to create 3 background png images (2 for button's left part (one with active image another passive) and 1 for the right part, the round corner). Note that I use one of left background images as background for ruUploadProgress span when there is an upload happening with a file name being uploaded.
Note createContentPageAdditionalOptions class, I use it here cause I don't want to change the view of all asyncuploads I have, just particular one, next step, on the page where you have the control add following snippet:
This will enable native hovering to work when browser is using Flash/Silverlight object.
Finally my control:
and JS it calls when upload completes:
so that postback happens immediately and picture is set.
That's it, hopefully someone will find this usefull :)
P.S.: attached file has 4 views: default, hovered, uploading and default again (after upload)
Note: it's quick and dirty :)
I needed to customize the "Select" button's view to match UI, it should have had:
1)only button, no 'fake' file input, no file list, nothing, only immediate 1 file upload (to set current picture)
2)round corners
3)different style when hovered
4)resize to match inner text when site's language is changed
Note: when button is hovered in browsers that support Flash/Silverlight cursor doesn't change to 'pointer' type, but does in IE 64-bit.
I didn't investigate much, simple setting cursor: pointer !important; didn't do the trick (admins, any ideas?)
Ok, you will need to create 3 background png images (2 for button's left part (one with active image another passive) and 1 for the right part, the round corner). Note that I use one of left background images as background for ruUploadProgress span when there is an upload happening with a file name being uploaded.
.createContentPageAdditionalOptions .RadUpload
{
width
:
100px
!important
;
}
.RadUpload input
{
font-family
:
verdana
!important
;
}
.createContentPageAdditionalOptions .RadUpload input.ruFakeInput
{
display
:
none
;
}
.RadUpload input.ruBrowse
{
background
:
url
(/Images/btnLeftPartInactive.png)
top
left
no-repeat
!important
;
width
:
auto
!important
;
line-height
:
21px
;
height
:
23px
;
text-align
:
left
;
margin
:
0px
3px
0px
0px
!important
;
padding
:
0px
8px
3px
18px
!important
;
}
.createContentPageAdditionalOptions .RadUpload .ruInputs
{
text-align
:
center
;
}
.RadUpload input.ruBrowse,
.createContentPageAdditionalOptions .RadUpload .ruUploadProgress,
.createContentPageAdditionalOptions .RadUpload .ruCancel,
.createContentPageAdditionalOptions .RadUpload .ruRemove
{
color
:
#fff
!important
;
}
.createContentPageAdditionalOptions .RadUpload .ruUploadProgress
{
background
:
url
(/Images/btnLeftPartInactive.png)
top
left
no-repeat
!important
;
margin
:
0px
3px
0px
0px
!important
;
height
:
23px
;
overflow
:
hidden
;
width
:
80px
;
}
.RadUpload input.ruButtonHover
{
background
:
url
(/Images/btnLeftPartActive.png)
top
left
no-repeat
!important
;
color
:
#d14b35
!important
;
}
.RadUpload .ruFileWrap
{
width
:
auto
!important
;
padding
:
0px
!important
;
background
:
url
(/Images/btnRightPart.png)
top
right
no-repeat
!important
;
}
.RadUpload input.ruBrowse,
.createContentPageAdditionalOptions .RadUpload .ruCancel,
.createContentPageAdditionalOptions .RadUpload .ruRemove,
.RadUpload input.ruFileInput
{
cursor
:
pointer
!important
;
}
Note createContentPageAdditionalOptions class, I use it here cause I don't want to change the view of all asyncuploads I have, just particular one, next step, on the page where you have the control add following snippet:
var
modules = Telerik.Web.UI.RadAsyncUpload.Modules;
if
(modules && (modules.Silverlight.isAvailable() || modules.Flash.isAvailable())) {
$(
".ruFileWrap"
).live(
"mouseover mouseout"
,
function
(event) {
$(
this
).children(
"input[class != 'ruFakeInput']"
).toggleClass(
"ruButtonHover"
);
});
}
This will enable native hovering to work when browser is using Flash/Silverlight object.
Finally my control:
<
telerik:RadAsyncUpload
runat
=
"server"
ID
=
"RadAsyncUploadImageForNavNode"
AllowedFileExtensions
=
"jpg,jpeg,png,gif"
CssClass
=
"divToBeCentered"
MaxFileSize
=
"5242880"
MultipleFileSelection
=
"Disabled"
OnFileUploaded
=
"RadAsyncUploadImageForNavNode_FileUploaded"
EnableInlineProgress
=
"false"
Width
=
"120px"
MaxFileInputsCount
=
"1"
OnClientFileUploaded
=
"RadAsyncUploadImageForNavNode_OnClientFileUploaded"
Localization-Select="<%$ Resources:PGC, ProjectContentElement_UploadImage %>"
Localization-Cancel="<%$ Resources:PGC, General_Cancel %>"
Localization-Remove="<%$ Resources:PGC, General_Remove %>"
>
</
telerik:RadAsyncUpload
>
and JS it calls when upload completes:
function
RadAsyncUploadImageForNavNode_OnClientFileUploaded(sender, args) {
$(
"#btnRefreshUploadedImageToCurrentProjectElementStub"
).click();
}
so that postback happens immediately and picture is set.
That's it, hopefully someone will find this usefull :)
P.S.: attached file has 4 views: default, hovered, uploading and default again (after upload)